Я использую matplotlib и seaborn для создания своих графиков в файле PDF, который собирает все открытые фигуры.
В упрощенном виде мой код выглядит следующим образом:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
# create random dataframe
df = pd.DataFrame(np.random.rand(30, 4), columns=['A', 'B', 'C', 'D'])
# create plots
ax1 = sns.lineplot(data=df.loc[:, ['A']], color='r')
ax2 = ax1.twinx()
ax2 = sns.lineplot(data=df.loc[:, ['B']], color='b', ax=ax2)
# this works in order to separate the plots into different figures
# but I do not want to call plt.figure() before every plot
#plt.figure()
ax3 = sns.scatterplot(data=df, x='C', y='D')
# create pdf file with plots
pp = PdfPages('plots.pdf')
figs = [plt.figure(n) for n in plt.get_fignums()]
for fig in figs:
fig.savefig(pp, format='pdf')
pp.close()
# close all existing figures
for fig in figs:
plt.close(fig)
Но это Таким образом, рисунки помещены на одну страницу в файле PDF, потому что они принадлежат к одному рисунку:
введите описание изображения здесь
Я могу создать новую фигуру вручную для каждого графика, используя plt.figure()
.
Но как я могу автоматически создавать графики на новом рисунке или, по крайней мере, помещать все графики на разные фигуры при создании файла PDF?
Заранее спасибо!