【问题标题】:make multiple plots per page and over several pages inside a 'for' loop for matplotlib in python在 python 中为 matplotlib 的“for”循环中的每页和多个页面制作多个图
【发布时间】:2012-11-15 19:00:07
【问题描述】:

我需要从数值模型中生成 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 个单独的图?

【问题讨论】:

    标签: python loops matplotlib plot pdf-generation


    【解决方案1】:

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

    【讨论】:

    • 没有办法自动生成新图形吗?我需要绘制大约 25 个数字,肯定有什么方法可以做到吗?
    • 您可以循环执行此操作。例如,for i in range(3): 然后是 fig = plt.figure(i)ax = fig.add_subplot(sub),最后在退出循环之前,您可以将 fig 保存为 fig.savefig('your_file_path'+str(i)+'_'+fig.png')。可能还有其他更简单的方法可以做到这一点。
    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多