簡體   English   中英

多個文件、多個繪圖保存到多頁、單個 pdf 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM