首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用matplotlib将多幅图保存在一个pdf页面上

使用matplotlib将多幅图保存在一个pdf页面上
EN

Stack Overflow用户
提问于 2017-07-18 03:58:36
回答 1查看 10.7K关注 0票数 4

我试图将所有11个扇区的图表从部门列表保存到1pdf表格。到目前为止,下面的代码给了我一个单独的表格上的图表(11页pdf页)。

每日返回函数是我正在绘制的数据。每张图上有两行。

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 06:30:16

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

代码语言:javascript
运行
复制
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)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45157243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档