【发布时间】:2014-12-17 09:10:06
【问题描述】:
我有一个 pandas 数据框,其中一列包含时间戳 (start),另一列包含 timedeltas (duration) 以指示持续时间。
我正在尝试绘制一个条形图,显示这些持续时间,其左边缘位于时间戳。我还没有在网上找到这样做的。有没有办法实现这一目标?
到目前为止,这是我所拥有的,但不起作用:
height = np.ones(df.shape[0])
width = [x for x in df['duration']]
plt.bar(left=df['start'], height=height, width=width)
编辑: 我已将宽度更新如下,但这也不能解决这个问题:
width = [x.total_seconds()/(60*1200) for x in df['duration']]
我很想知道datetime.timedelta 对象是否可以在width 中使用,因为datetime 对象可以用作x 轴。如果没有,还有什么替代方案?
编辑#2:
这可能不是我问题的确切答案,但它解决了我的目的。对于有兴趣的人,这是我最终采用的方法(为此我使用start 和duration 制作end):
for i in range(df.shape[0]):
plt.axvspan(df.ix[i, 'start'], df.ix[i, 'end'], facecolor='g', alpha=0.3)
plt.axvline(x=df.ix[i, 'start'], ymin=0.0, ymax=1.0, color='r', linewidth=1)
plt.axvline(x=df.ix[i, 'end'], ymin=0.0, ymax=1.0, color='r', linewidth=1)
【问题讨论】:
标签: python matplotlib pandas bar-chart dataframe