我在绘制pandas具有PeriodIndex.
我的数据有差距,我想实现以下目标:
- 间隙应保持间隙,无需插值;
- 由于每个值在整个时间段内都有效,因此该值应在整个时间段内显示为水平线。
- 锦上添花:期间边界处没有垂直线。
例子
yearly = pd.DataFrame({'avSpeed': [50, 40, 20, 16]}, index=pd.PeriodIndex(['2014', '2015', '2018', '2019'], freq='A'))
avSpeed
2014 50
2015 40
2018 20
2019 16
到目前为止我的代码
通过填充间隙
NaN(通过以不变的频率重新采样)使数据帧无间隙:yearly2 = yearly.resample('A').mean() avSpeed 2014 50.0 2015 40.0 2016 NaN 2017 NaN 2018 20.0 2019 16.0用以下方式绘制
steps-post:plt.figure() yearly2['avSpeed'].plot(color='red', drawstyle='steps-post')
还缺少什么:
- 主要问题:2019 年的值仅在年初显示。
- 另外:存在垂直连接线(不需要)。
编辑:解决方案
无需对数据进行上采样,甚至无需使用NaN! hlines我可以像这样绘制数据:
ax=plt.subplot()
ax.hlines(yearly['avSpeed'], yearly.index.start_time, (yearly.index+1).start_time, 'r') #or: yearly.index.end_time
ax.legend()
plt.show()
非常感谢@piRSquared 为我指明了正确的方向。


