我正在尝试使用Pandas DataFrame列中的数据创建多个时间序列图。我想将所有这些图表保存到单个pdf文件中。挑战在于这些图表都具有次级y轴,其具有不同的比例(参见下面的Col Z)。我已经看到了将多个图表保存为pdf的示例,以及绘制带有辅助y轴的单个图表的示例,但不知道如何将两者合并。我的实际DataFrame有50列,因此手动操作会很乏味。提前谢谢。
以下是我的尝试:
df1 = pd.DataFrame(np.random.rand(10, 4))
df1.columns = ['A', 'B', 'C', 'Z']
date_range = pd.date_range('1/31/2011', periods=10, freq='M')
df1['Z'] = 100*df1['Z']
df1.plot(kind='line', subplots=True, secondary_y=['Z'])
#
import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
plt.figure()
for cols in df1.columns:
df1.plot(y=cols, secondary_y=['Z'])
pdf.savefig(fig)
pdf.close()
答案 0 :(得分:0)
据我了解,我认为这正是你所尝试的。这将生成4个图表,每个图表中包含2个序列。系列A
,B
,C
与系列Z
一起绘制:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf
df1 = pd.DataFrame(np.random.rand(10, 4))
df1.columns = ['A', 'B', 'C', 'Z']
date_range = pd.date_range('1/31/2011', periods=10, freq='M')
df1['Z'] = 100*df1['Z']
df1.plot(kind='line', subplots=True, secondary_y=['Z'])
with matplotlib.backends.backend_pdf.PdfPages("output.pdf") as pdf:
for cols in df1.columns:
## plot 1
fig, ax1 = plt.subplots()
df1.plot(y=cols, ax=ax1, color='C1')
ax1.legend(loc=2)
## plot 2
ax2 = ax1.twinx()
df1.plot(y='Z', ax=ax2)
pdf.savefig()