Несколько файлов, несколько графиков, сохраненных в многостраничный, один файл PDF - PullRequest
1 голос
/ 01 апреля 2020

Я работаю с> 100 CSV-файлами, в то время как я открываю и строю в al oop. Моя цель - сохранить каждый график на странице 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-файл пуст. Любая помощь будет высоко ценится.

Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2020

Вам нужно переместить строку

fig, ax = plt.subplots(figsize=(20,10))

Внутри l oop, иначе каждая итерация будет использовать один и тот же экземпляр фигуры вместо нового. Также обратите внимание, что вам нужно закрыть 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()
...