如何解决为什么在嵌套函数中不可调用“图形”对象?
我正在调用一个函数,该函数创建一个带有两个子图的 matplotlib 图,然后使用嵌套函数绘制子图。基本上是这样的:
def combined_plot(df_1,df_2):
fig,ax = plt.subplots(1,2,figsize=(14,4))
plot_function_one(df_1,ax[0])
plot_function_two(df_2,ax[1])
return fig
当我打电话时,我收到以下类型错误:'Figure' object is not callable
。我以前在其他上下文中做过这种事情,所以我很好奇潜在的原因是什么,或者这个错误在高度上意味着什么。当我在 matplotlib 的上下文中搜索错误时,我没有得到任何相关结果。
这是整个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-66-aeb1feab3628> in <module>
4 subplot1_df = wrangling_subplot1_df(df2)
5 subplot2_df,_ = wrangling_subplot2_df(df2)
----> 6 fig2 = combined_cpu_plot(subplot1_df,subplot2_df)
TypeError: 'Figure' object is not callable
注意:我真的不可能提供一个可重现的示例,因为代码和数据如此复杂,我几乎无法猜测多少简化会重现错误。所以我希望我在这个高层所做的事情有问题——如果没有,那本身就是有帮助的。
我可以在函数调用之外运行函数体而不会出错,所以错误似乎来自将这些调用放入函数中。如果我运行该函数一次,则没有错误。如果我第二次运行它,它会抛出错误,并继续抛出它,直到我上升并重置功能。如果我连续运行它两次,它会引发错误。所以如果我跑,这个,我得到这个数字:
subplot1_df = wrangling_subplot1_df(df1)
subplot2_df,_ = wrangling_subplot2_df(df1)
fig1 = combined_cpu_plot(subplot1_df,subplot2_df)
但是如果我运行这个,我会得到类型错误:
subplot1_df = wrangling_subplot1_df(df1)
subplot2_df,subplot2_df)
subplot1_df = wrangling_subplot1_df(df2)
subplot2_df,_ = wrangling_subplot2_df(df2)
fig2 = combined_cpu_plot(subplot1_df,subplot2_df)
所以我猜有什么东西被遗忘了,第二次混淆了函数?我尝试了 pyplot.close()
,但这似乎没有影响问题。
编辑:添加了整个错误。
编辑:添加了关于第二次运行的示例。
解决方法
不要将您的函数分配给同名的变量!在我的代码中的某个地方,我将函数产生的图形分配给了一个同名变量,如下所示:
combined_cpu_plot = combined_cpu_plot(subplot1_df,subplot2_df)
这第一次运行良好,因为名称 combined_cpu_plot
现在包含函数返回的 matplotlib 图。但是,第二次,语法尝试将图形作为函数调用,这就是错误说图形对象不可调用的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。