Matplotlib打开和保存多个图形

时间:2018-08-08 09:43:06

标签: python pandas matplotlib

你好,我在从熊猫数据框中绘制数据时遇到问题。在几个for循环中,我想创建一个大的散点图(multiplots.png),在每个循环中向其添加新数据,同时还要创建单独的图,并在每个j循环中进行绘制和保存(plot_i_j.png)。

在我的代码中,plots_i_j.png图形是正确生成的,但是multiplots.png始终以最后的plot_i_j.png图形结尾。如您所见,我正在尝试在axComb上绘制multiplots.png,而plot_i_j.png图则在ax上绘制。有人可以帮我吗?

import pandas as pd
import matplotlib.pyplot as plt

columnNames = ['a','b']
scatterColors = ['red','blue','green','black']

figComb, axComb = plt.subplots(figsize=(8,6))

for i in range(4): # this is turbine number
    df1 = pd.DataFrame(np.random.randn(5, 2), columns=columnNames)
    df2 = pd.DataFrame(np.random.randn(5, 2), columns=columnNames)
    print(df1)
    for j in range(2):
        fig, ax = plt.subplots(figsize=(8,6))
        fig.suptitle(str(i)+'_'+str(j), fontsize=16)
        df1.plot(columnNames[j], ax=ax, color='blue', ls="--")
        plt.savefig('plot_'+str(i)+'_'+str(j)+'.png')
        df1.reset_index().plot.scatter('index',columnNames[j],3,ax=axComb,color=scatterColors[j])
        df2.reset_index().plot.scatter('index',columnNames[j],100,ax=axComb,color=scatterColors[j])   
plt.savefig('multiPlots.png')

1 个答案:

答案 0 :(得分:0)

确实是一个小错误。当您执行plt.savefig时,matplotlib将查找最后一个调用的图形。

plt.savefig('plot_'+str(i)+'_'+str(j)+'.png')替换为fig.savefig('plot_'+str(i)+'_'+str(j)+'.png')

然后将plt.savefig('multiPlots.png')替换为figComb.savefig('multiPlots.png')