在同一图上绘制两个不同的数据框

时间:2019-01-18 07:47:52

标签: python pandas dataframe matplotlib

我正在尝试在同一图上绘制两个不同的数据框。但是它只显示第二个。我有两个数据框:reconstructedexpected,它们的形状相同。我需要根据索引(idx)来绘制它们。因此,首先我需要根据每个索引对它们进行分区;由ts_rec = reconstructed.loc[idx]ts_exp = expected.loc[idx]完成。然后,我应该绘制这两个新的数据框。他们每个人都有28列,所以我有28个子布局,布局=(7,4)。问题在于,它仅显示第二(红色)时间序列,但是我需要让它们两个都能够比较它们的值。我怎样才能解决这个问题?

ts_rec = reconstructed.loc[idx]
ts_exp = expected.loc[idx]
x = np.arange(ts_rec.shape[0])
ts_rec.plot(
    x=x, subplots=True, layout=(7, 4), lw=2, legend=False, 
    figsize=(12, 10), sharey=True, color='green')
ts_exp.plot(
    x=x, subplots=True, layout=(7, 4), lw=2, legend=False, 
    figsize=(12, 10), sharey=True, color='red')
pyplot.title("Timeseries id = %d" % idx)
pyplot.xlim(xmin=0)
pyplot.show()
pyplot.savefig(config['dir'] + 'ts_' + str(idx) + '.pdf')
pyplot.clf()

1 个答案:

答案 0 :(得分:1)

您只需要存储第一个绘图中的ax句柄,并将其作为ax参数传递给第二个绘图:

plt_ax = ts_rec.plot(
    x=x, subplots=True, layout=(7, 4), lw=2, legend=False, 
    figsize=(12, 10), sharey=True, color='green')
ts_exp.plot(
    ax=plt_ax, x=x, subplots=True, layout=(7, 4), lw=2, legend=False, 
    figsize=(12, 10), sharey=True, color='red')