我正在考虑创建时间轴来显示某些项目的状态更改。
对于每个项目,我都有一个事件列表 - 例如:
我正在使用pandas,并考虑使用堆叠的水平条形图(http://pandas.pydata.org/pandas-docs/stable/visualization.html#bar-plots):
但是,这种情况下的条形图由以下数据框支持:
In [17]: df2
Out[17]:
a b c d
0 0.865681 0.276997 0.691200 0.077541
1 0.863821 0.465361 0.076636 0.013124
2 0.266339 0.359055 0.237709 0.698812
3 0.880864 0.198044 0.807911 0.889326
4 0.253440 0.080855 0.206936 0.603920
5 0.121422 0.880760 0.492782 0.841651
6 0.151359 0.264984 0.249734 0.136582
7 0.222347 0.007675 0.978766 0.267517
8 0.102839 0.847454 0.775913 0.519219
9 0.118314 0.347371 0.314426 0.308254
我不确定大熊猫最有效的方式是将我的事件时间线映射到某个东西并绘制它。我想我可以将时间戳转换为持续时间(例如秒数),但我更喜欢x轴显示上面第一个例子的时间戳,所以这可能不起作用。
这样做有好处吗?
答案 0 :(得分:2)
fig, ax = plt.subplots()
df.plot(kind='barh', stacked=True, ax=ax)
ax.set_yticklabels(['A', 'B', 'C', 'D', 'E', 'F'])
time = pd.date_range(start=pd.to_datetime('07:00', format='%H:%M'), end=pd.to_datetime('13:00', format='%H:%M'),freq='H')
time_x = [dt.strftime('%H:%M') for dt in time]
ax.set_xticklabels(time_x)
fig.autofmt_xdate()
plt.show()