[英]Multiple files, multiple plots saved to a multipage, single pdf file
在循环打开和绘图时,我正在处理 >100 个 csv 文件。 我的目标是将每个图保存在 pdf 页面上,并生成一个大的 pdf 文件,每个页面都包含来自单个文件的图。 我正在查看这些示例 - (1)和(2) 。 使用matplotlib.backends.backend_pdf
尝试组合我无法获得所需的结果。
在这里,我重新创建了我的代码和我使用的方法:
pdf = PdfPages('alltogther.pdf')
fig, ax = plt.subplots(figsize=(20,10))
for file in glob.glob('path*'):
df_in=pd.read_csv(file)
df_d = df_in.resample('d')
df_m = df_in.resample('m')
y1=df_d['column1']
y2=df_m['column2']
plt.plot(y1,linewidth='2.5')
plt.plot(y2,linewidth='2.5')
pdf.savefig(fig)
有了这个,所有的图都叠加在同一个图上,生成的pdf是空的。
你需要移动线
fig, ax = plt.subplots(figsize=(20,10))
在循环内部,否则每次迭代都将使用相同的图形实例而不是新实例。 另请注意,完成后需要关闭pdf。 所以代码应该是
pdf = PdfPages('alltogther.pdf')
for file in glob.glob('path*'):
fig, ax = plt.subplots(figsize=(20,10))
df_in=pd.read_csv(file)
df_d = df_in.resample('d')
df_m = df_in.resample('m')
y1=df_d['column1']
y2=df_m['column2']
plt.plot(y1,linewidth='2.5')
plt.plot(y2,linewidth='2.5')
pdf.savefig(fig)
pdf.close()
完整的、自包含的示例:
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
import numpy as np
pdf = PdfPages('out.pdf')
for i in range(5):
fig, ax = plt.subplots(figsize=(20, 10))
plt.plot(np.random.random(10), linestyle=None, marker='.')
pdf.savefig(fig)
pdf.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.