【发布时间】:2019-08-09 09:53:54
【问题描述】:
我有一个函数,它使用 seaborn 的 distplot 绘制和显示分布。看起来像这样
def getPlot(data):
x=sns.distplot(data, hist=False)
plt.show()
return x
每次调用该函数时,我都会得到分布图。
我需要一些帮助来修改函数,以便在多次调用函数结束时我应该得到一个额外的图,它是所有先前图的组合。
如果我的函数调用是
getPlot(data1)
getPlot(data2)
getPlot(data3)
我应该在调用函数时获取数据的各个图,并且在最后我希望将 3 个数据的图相互叠加。
仅将 plt.show() 移到函数外是不够的,因为我想要单独数据的单独图以及包含所有数据的图。
【问题讨论】:
-
“最后”是什么意思?每次来电
getPlot都不知道会不会再来电。 -
@Goyo 我只想积累剧情。我可以在最后打电话给
plt.show()来获得最终的情节。 -
您已经在
getPlot中调用了plt.show()并关闭了这些数字,因此额外的调用不会显示任何内容。也许您可以编写一个新函数(我们称之为getAllPlots),它采用数据集列表(或iterble)并绘制它们的叠加分布,然后在最后调用getAllPlots([data1, data2, data3])。这行得通吗? -
@AndrasDeak 如果我不在函数内调用
plt.show(),那么我将丢失每个data的单独图,最后在最后单独获得所有图的组合.但我想要他们两个,组合以及个人数据。 -
哦,好吧,我完全错过了。这有点困难。您仍然需要在最后致电
plt.show(),但您需要单独的数字。最简单的解决方案是在调用任何函数之前先创建一个单独的图形和坐标轴,并将该坐标轴传递给每个函数,该函数既将数据绘制到该坐标轴中,也将绘制到一个全新的图形中。我会投票重新提出这个问题,因为那样它就不是重复的了。
标签: python matplotlib seaborn