使用matplotlib在单个pdf页面上保存多个图 [英] Saving multiple plots on a single pdf page using matplotlib

查看:94
本文介绍了使用matplotlib在单个pdf页面上保存多个图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将所有11个扇区的图形从扇区列表保存到1张pdf表格中.到目前为止,以下代码为我提供了一张单独工作表上的图形(11 pdf页面).

I'm trying to save the graphs of all 11 sectors from sectorlist to 1 pdf sheet. So far the code below gives me a graph on a separate sheet (11 pdf pages).

每日收益函数是我正在绘制的数据.每个图上有2条线.

The daily return functions is the data I'm plotting. There are 2 lines on each graph.

with PdfPages('test.pdf') as pdf:
n=0
for i in sectorlist:
    fig = plt.figure(figsize=(12,12))
    n+=1
    fig.add_subplot(4,3,n)
    (daily_return[i]*100).plot(linewidth=3)
    (daily_return['^OEX']*100).plot()
    ax = plt.gca()
    ax.set_ylim(0, 100)
    plt.legend()
    plt.ylabel('Excess movement (%)')
    plt.xticks(rotation='45')
    pdf.savefig(fig)
plt.show()

推荐答案

不确定只是在您的问题中您的缩进是否错误,但是关键是您需要先完成所有子图的绘制,然后再将无花果另存为pdf.具体来说,您需要将fig = plt.figure(figsize=(12,12))pdf.savefig(fig)移到for循环之外,并将它们保留在with语句中.这是您修改后的一个示例,为您提供1个pdf页面,其中包含11个子图:

Not sure if your indentation is wrong just in your question, but the key is you need to finish plotting all subplots before save your fig as pdf. Specifically, you need to move fig = plt.figure(figsize=(12,12)) and pdf.savefig(fig) outside your for loop and keep them within your with statement. Here is one example modified from yours, which gives you 1 pdf page with 11 subplots:

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import numpy as np

with PdfPages('test.pdf') as pdf:
    t = np.arange(0.0, 2.0, 0.01)
    s = 1 + np.sin(2*np.pi*t)
    s = s * 50

    fig = plt.figure(figsize=(12,12))
    n=0
    for i in range(11):
        n += 1
        ax = fig.add_subplot(4,3,n)
        ax.plot(t, s, linewidth=3, label='a')
        ax.plot(t, s / 2, linewidth=3, label='b')
        ax.set_ylim(0, 100)
        ax.legend()
        ax.yaxis.set_label_text('Excess movement (%)')
        plt.setp(ax.xaxis.get_ticklabels(), rotation='45')
    pdf.savefig(fig)

这篇关于使用matplotlib在单个pdf页面上保存多个图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆