在python中为matplotlib的'for'循环内的每页和多个页面制作多个图

时间:2012-11-28 01:39:23

标签: python loops matplotlib plot pdf-generation

我需要从数值模型中生成100多个图(线图)。到目前为止,代码是生成循环内指定的图,但它不断添加多行到相同的4个图。我希望它完成制作4个图,然后打开一个新的页面并一次又一次地绘制这4个图,所以我应该说25页,共100个图。

到目前为止的代码 - 我从小开始想要在3页上生成12个图并将其保存为文件'plot.pdf':

from t2listing import *
import matplotlib.pylot as plt
from matplotlib.backends.backend_pdf import PdfPages

lst = t2listing('WAI1515PR_AW_407_ayfixold2.listing')

pdf_pages = PdfPages('plot.pdf')

feed = lst.generation.row_name

zone = feed[0:12]

sub = [221, 222, 223, 224]

for i in xrange(3):
    fig = plt.figure()
    for zone,sub in in zip(feed[0:12],(10/4+1)*sub):
        (time, massflow) = lst.history([('g',zone,'Generation rate')])
        ax1 = fig.add_subplot(sub)
        ax1.plot(time, massflow, 'k-')
        plt.ylabel('massflow kg/s')
        plt.xlabel('time in seconds')
        plt.title('GENER data')
        plt.tight_layout()
        plt.savefig('plot.pdf')
    pdf_pages.savefig(fig)
    pdf_pages.close()

到目前为止的结果是我获得了4个图,每个图上有3个线图,任何可能的方法来获得12个单独的图?

1 个答案:

答案 0 :(得分:0)

你应该在每次迭代中生成新的数字。例如,在第一次迭代中fig1 = plt.figure()ax1 = fig1.add_subplot(sub)。然后,在第二次迭代中fig2 = plt.figure()ax2 = fig2.add_subplot(sub),依此类推。通过这种方式,它将在每次迭代中绘制四个子图。您可以将每个数字保存为fig1.savefig(...)fig2.savefig(...) ...