在 Matplotlib 事件中使用位置参数键入错误
Type Error using Positional Arguments in Matplotlib Events
我正在尝试将具有特定名称的文件保存为 matplotlib 中的 on_key_press
事件。
这是我的代码,遵循 matplotlib 图:
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event, save_name):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure(save_name))
但是当我 运行 这段代码时,我得到以下错误:
TypeError: save_figure() missing 1 required positional argument: 'save_name'
我不知道如何将 save_name
变量传递给 save_figure
函数。
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure)
函数可以访问外部作用域中的变量,因此 save_figure
已经可以访问 save_name
,至少在您的示例代码中是这样。
您将 save_name
作为 event
参数传递。 save_figure
需要 2 个参数。您对 save_figure()
的调用只有一个参数。参数的顺序也很重要。所以当你调用 save_figure
时,它需要看起来像:
save_figure(event,save_name)
在不改变现有函数的情况下,这种问题通常采用的方法是使用匿名函数。
fig.canvas.mpl_connect('key_press_event', lambda event: save_figure(event,save_name))
我正在尝试将具有特定名称的文件保存为 matplotlib 中的 on_key_press
事件。
这是我的代码,遵循 matplotlib 图:
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event, save_name):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure(save_name))
但是当我 运行 这段代码时,我得到以下错误:
TypeError: save_figure() missing 1 required positional argument: 'save_name'
我不知道如何将 save_name
变量传递给 save_figure
函数。
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure)
函数可以访问外部作用域中的变量,因此 save_figure
已经可以访问 save_name
,至少在您的示例代码中是这样。
您将 save_name
作为 event
参数传递。 save_figure
需要 2 个参数。您对 save_figure()
的调用只有一个参数。参数的顺序也很重要。所以当你调用 save_figure
时,它需要看起来像:
save_figure(event,save_name)
在不改变现有函数的情况下,这种问题通常采用的方法是使用匿名函数。
fig.canvas.mpl_connect('key_press_event', lambda event: save_figure(event,save_name))