微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有图像显示在 for 循环上

如何解决没有图像显示在 for 循环上

我制作了一个函数,它可以创建图形并在其上应用循环。

def doplot(df,somenumber):
forplot = some_preprocessing_function(df,somenumber)
fig = px.line(forplot,x = 'STATS_DTTM',y = "FRME_disTRICT_CODE",color = "FRME_MEDIA",line_group="FRME_MEDIA",hover_name="FRME_MEDIA",line_dash  = 'FRME_MEDIA')

return fig

在没有for循环的情况下执行该函数时,该函数成功显示一个图像。

doplot(df,0)

检查函数生成图像后,我尝试对其进行 for 循环,以便可以看到不同参数的输出图像。

for i in range(4):
    doplot(df,i)

for 循环无法创建任何图像。我发现我在绘图函数中遗漏了 fig.show(),但我仍然无法理解为什么最后一张图像没有出现。据我了解,for 循环与下面的代码相同。

doplot(df,0)
doplot(df,1)
doplot(df,2)
doplot(df,3)

并且执行上面的代码导致最后一个代码doplot(df,3)输出图像。

如果是关于 for 循环,有人能解释一下我对它的误解吗?

非常感谢,

解决方法

您可以尝试在 plt.figure() 函数中使用 doplot(),例如:

#import matplotlib.pyplot as plt

def doplot(df,somenumber):
plt.figure()
forplot = some_preprocessing_function(df,somenumber)
fig = px.line(forplot,x = 'STATS_DTTM',y = "FRME_DISTRICT_CODE",color = "FRME_MEDIA",line_group="FRME_MEDIA",hover_name="FRME_MEDIA",line_dash  = 'FRME_MEDIA')

return fig

告诉我它是否适合您。

编辑(解释):所以 matplotlib 的作用是在您使用 plt.line() 或任何其他绘图函数调用它时创建一个新图形。在 for 循环中,它继续覆盖相同的数字直到循环结束,因此您最终只得到最终图而不是来自 for 循环的多个图。这就是我在将循环的函数中添加 plt.figure() 的原因,因此它每次迭代都会创建一个新图形

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。