在同一图熊猫上绘制比数据框更多的内容

时间:2017-07-18 13:22:43

标签: python pandas plot

我有许多具有相同结构的聚合数据框列表。

我想在同一图表上绘制每个数据框的两列。

我使用了这段代码片段,但它为每个数据帧提供了一个单独的图表:

# iterate through a list
for df in frames: 
    df.plot(x='Time', y='G1', figsize=(16, 10))
    plt.hold(True)
plt.show()

2 个答案:

答案 0 :(得分:2)

正如您所注意到的,pandas.DataFrame.plot不受matplotlib的hold参数的影响,因为它每次都会创建一个新的数字。解决这个问题的方法是明确传递ax参数。如果ax不是None,它会告诉DataFrame绘制一组特定的轴而不是自己制作一个新的数字。

您可以提前准备一组轴,或使用第一次拨打df.plot的返回值。我在这里展示了后一种方法:

ax = None
for df in frames:
    ax = df.plot(x='Time', y='G1', figsize=(16, 10), ax=ax)
    plt.hold(True)
plt.show()

答案 1 :(得分:2)

如果您将每个集合编入索引,则可以将它们连接起来并立即绘制它们而无需迭代。

# If not indexed:
# frames = [df.assign(sample=i) for i, df in enumerate(frames)]
df = pd.concat(frames).pivot(index='Time', columns='sample', values='G1')
df.plot(figsize=(16, 10));

这有助于确保您的数据已对齐,并且在matplotlib 2.0中不推荐使用plt.hold