我有一个for循环想绘制多个图形,但它们是互相绘制的,我到底做错了什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一个for循环想绘制多个图形,但它们是互相绘制的,我到底做错了什么?相关的知识,希望对你有一定的参考价值。

我有这段代码,它应该返回多个图形,但由于某些原因我无法理解(从未遇到过这个问题)。我得到了多个图形,但是当它在循环中迭代时,第一个图形之后的图形包含了之前所有的图形。

for x in np.arange(0,3):
    t1= table.iloc[x,2]
    t2= table.iloc[44,2]
    dts = np.arange(-0.02,0.02,0.0001)
    cc = np.zeros(len(dts))
    for i,dt in enumerate(dts):
        n1,v=np.histogram(t1,899*100)
        n2,v=np.histogram(t2-dt,bins=v)
        cc[i] = np.corrcoef(n1,n2)[0,1]
    plt.plot(dts,cc)
    #plt.title(str(table[table['ClusterNames']==test1.iloc[x,0]].iloc[0,0])+'_'+str(table[table['ClusterNames']==test1.iloc[x,1]].iloc[0,0]))
    filename='step'+str(x).zfill(6)+'.png'
    plt.savefig(filename, form='png', dpi = 96, transparent = True)

我到底做错了什么?

谢谢!我有这样的代码,它应该是在循环中包含所有之前的图形。

答案

有很多方法可以解决这个问题。如果要在保存后清空图形,你可以添加以下内容 plt.clf() 到循环的末端。要在一页纸上绘制所有内容,您可以使用 plt.subplot2gridplt.subplots.

另一答案

如果你想让每个数字在不同的窗口中,你应该添加 plt.figure() 之前 plt.plot()

以上是关于我有一个for循环想绘制多个图形,但它们是互相绘制的,我到底做错了什么?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 在 for 循环中绘图

从 Typescript 中的 For 循环在画布上绘制线条不会呈现

在单个循环中使用子图绘制多个图形

Plotly:将多个图形绘制为子图

通过循环绘制多个计数图

canvas高效绘制10万图形,你必须知道的高效绘制技巧