Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个文件、多个绘图保存到多页、单个pdf文件_Python_Loops_Matplotlib_Plot_Pdfpages - Fatal编程技术网

Python 多个文件、多个绘图保存到多页、单个pdf文件

Python 多个文件、多个绘图保存到多页、单个pdf文件,python,loops,matplotlib,plot,pdfpages,Python,Loops,Matplotlib,Plot,Pdfpages,在循环中打开和打印时,我使用>100个csv文件。我的目标是将每个绘图保存在一个pdf页面上,并生成一个大的pdf文件,每个页面包含单个文件中的绘图。我正在看这些例子——和。使用matplotlib.backends.backend\u pdf尝试组合时,我无法获得所需的结果 在这里,我重新创建了我的代码和使用的方法: pdf = PdfPages('alltogther.pdf') fig, ax = plt.subplots(figsize=(20,10)) for file in glo

在循环中打开和打印时,我使用>100个csv文件。我的目标是将每个绘图保存在一个pdf页面上,并生成一个大的pdf文件,每个页面包含单个文件中的绘图。我正在看这些例子——和。使用
matplotlib.backends.backend\u 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.子批次(figsize=(20,10))
在循环内部,否则每个迭代将使用相同的figure实例而不是新实例。还请注意,处理完pdf后需要关闭它。所以代码应该是

pdf=PdfPages('alltogether.pdf')
对于glob.glob('path*')中的文件:
图,ax=plt.子批次(图尺寸=(20,10))
df_in=pd.read_csv(文件)
df_d=df_in.重采样('d')
df_m=df_in.重采样('m')
y1=df_d['column1']
y2=df_m['column2']
plt.绘图(y1,线宽='2.5')
plt.绘图(y2,线宽='2.5')
pdf.savefig(图)
pdf.close()
编辑
完整、独立的示例:

导入matplotlib.pyplot作为plt
从matplotlib.backends.backend\u pdf导入PdfPages
将numpy作为np导入
pdf=PdfPages('out.pdf')
对于范围(5)中的i:
图,ax=plt.子批次(图尺寸=(20,10))
plt.plot(np.random.random(10),线型=无,标记='。)
pdf.savefig(图)
pdf.close()

您需要移动线路

fig,ax=plt.子批次(figsize=(20,10))
在循环内部,否则每个迭代将使用相同的figure实例而不是新实例。还请注意,处理完pdf后需要关闭它。所以代码应该是

pdf=PdfPages('alltogether.pdf')
对于glob.glob('path*')中的文件:
图,ax=plt.子批次(图尺寸=(20,10))
df_in=pd.read_csv(文件)
df_d=df_in.重采样('d')
df_m=df_in.重采样('m')
y1=df_d['column1']
y2=df_m['column2']
plt.绘图(y1,线宽='2.5')
plt.绘图(y2,线宽='2.5')
pdf.savefig(图)
pdf.close()
编辑
完整、独立的示例:

导入matplotlib.pyplot作为plt
从matplotlib.backends.backend\u pdf导入PdfPages
将numpy作为np导入
pdf=PdfPages('out.pdf')
对于范围(5)中的i:
图,ax=plt.子批次(图尺寸=(20,10))
plt.plot(np.random.random(10),线型=无,标记='。)
pdf.savefig(图)
pdf.close()

谢谢您的回复。pdf仅存储最后一个图形,而不是全部。@Learning\u datascience我添加了一个完整的、自包含的示例。如果你运行了完全相同的代码,你应该会得到一个5页的pdf,每个页面包含一个单独的、不同的数字。你能试试看,看看你是否得到了我刚才描述的结果吗?谢谢你的回复。pdf仅存储最后一个图形,而不是全部。@Learning\u datascience我添加了一个完整的、自包含的示例。如果你运行这个代码,你应该会得到一个pdf,有5页,每页都包含一个不同的数字。你能试试看,看看你是否得到了我刚才描述的结果吗?