【问题标题】:plotting multiple time series simultaneously in matplotlib在 matplotlib 中同时绘制多个时间序列
【发布时间】:2017-09-27 17:42:39
【问题描述】:

我将数据划分为不同的时间段。例如,时间序列是连续的(一个数据集是 2 月的,然后是 2016 年 4 月的下一个数据集和 2016 年 1 月的下一个数据集)但是我怎样才能减少 2015 年之间的差距> 它真的只是浪费空间并缩小图表

我可以将它们绘制在一起,如下图所示。有什么办法可以去掉中间的时间戳?

【问题讨论】:

  • 手动设置 xticks 和 xtick 标签?
  • 要么您必须修改 x 值以消除间隙,调整 x 刻度和标签,或者您可以在 x 轴上创建“间隙”,如 stackoverflow.com/questions/32185411/…
  • 作为替代方案,您可以生成一行三个子图,每个连续子范围一个(参见matplotlib.org/examples/pylab_examples/subplots_demo.html 示例)。
  • 日期本身重要吗?从您的问题很难看出,但也许将 x 轴更改为“从监控期开始的天数”可能更合适。然后,这将允许您的所有三个系列都沿同一轴绘制。通常,具有非连续日期轴的解释非常令人困惑,并且可能会产生误导。
  • @DavidG 那是我的下一个想法。但我想看看是否可以不这样做

标签: python pandas matplotlib


【解决方案1】:

我找到了一个解决方案,虽然不是我想要的,但可以达到目的。我修改了this链接发布的解决方案:

fig=plt.figure()
fig,(ax,ax2,ax3) = plt.subplots(1,3,sharey=True)
fig.subplots_adjust(wspace=0.05)
fig.set_size_inches(20, 3, forward=True)

ax.plot(healthyde['timestamp'],healthyde['value'],label='healthy',color='g')
ax2.plot(healthynde['timestamp'],healthynde['value'],label='detection',color='y')
ax3.plot(healthylde['timestamp'],healthylde['value'],label='fault',color='r')

ax.set_xlim(healthyde['timestamp'].iloc[0], healthyde['timestamp'].iloc[-1] )
ax2.set_xlim(healthynde['timestamp'].iloc[0], healthynde['timestamp'].iloc[-1] )
ax3.set_xlim(healthylde['timestamp'].iloc[0], healthylde['timestamp'].iloc[-1] )

labels = ax.get_xticklabels()
for label in labels:
    label.set_rotation(30)

labels = ax2.get_xticklabels()
for label in labels:
    label.set_rotation(30)

labels = ax3.get_xticklabels()
for label in labels:
    label.set_rotation(30)

ax.legend()
ax2.legend()
ax3.legend()

plt.show()

输出:

【讨论】:

    【解决方案2】:

    如果您使用的是 pandas DataFrame,那么这应该可以工作,并且比上面的答案更整洁:

    fig = plt.figure()
    fig, axes = plt.subplots(1, 3, sharey=True)
    
    for (col, data), ax, c in zip(df.iteritems(), axes):
        data.dropna().plot(ax=ax, rot=30, legend=True)
    

    【讨论】:

    • 不,日期时间索引很重要,我不想删除它。必须保留日期时间索引是问题首先发生的原因
    • 抱歉,这个不清楚。我的回答可能是最好的,但要整理一下。我会编辑。
    • @Yash 这应该可以工作并且更具可读性和简洁性:)
    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2019-04-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2019-12-02
    相关资源
    最近更新 更多