我正在根据我保存在 pandas DataFrame 中的数据生成一些图;这些数据(称之为data
)的快照如下:
CIG CLD DPT OBV P06 P12 POS POZ Q06 Q12 TMP \
2010-10-01 18:00:00 8 CL 54 N NaN NaN 0 0 NaN NaN 85
2010-10-01 21:00:00 8 CL 50 N NaN NaN 0 0 NaN NaN 89
2010-10-02 00:00:00 8 CL 51 N 0 NaN 0 0 0 NaN 81
2010-10-02 03:00:00 8 CL 52 N NaN NaN 0 0 NaN NaN 67
2010-10-02 06:00:00 8 CL 52 N 0 NaN 0 0 0 NaN 62
2010-10-02 09:00:00 8 CL 51 N NaN NaN 0 0 NaN NaN 59
...
其中一个图的想法是将TMP
和DPT
字段的轨迹(通过使用 生成)覆盖在对应于字段data['TMP'].plot()
的阴影之上。CLD
因此,例如,之间的时间块2010-10-01 18:00:00
-2010-10-01 19:30:00
可能是浅灰色,如果下一个条目CLD
不是“CL”,那么块2010-10-01 19:30:00
-2010-10-01 22:30:00
可能是较深的颜色,这样我可以看到CLD
字段如何变化与其他领域同时进行。
我的想法是使用一个Rectangle
补丁matplotlib.Patches
来完成这种着色。由于我将绘图的边界建立在 and 的轨迹上TMP
,DPT
所以我总是会确切地知道补丁的高度是多少,而且我也总是知道它的左边界和它的宽度 - 但皱纹是我知道的它们在datetime
坐标中,而不是在 xy 坐标中。所以,如果bnd_left
左边界是 a datetime
,ylo
并且height
是浮动的,并且width
是 a datetime.timedelta
,我正在尝试制作一个像这样的补丁,
shading_patch = Rectangle([bnd_left, ylo], width, height)
但这不起作用。当TypeError
补丁尝试创建自己时,因为无法添加 afloat
和 a datetime.timedelta
。在文档中,我找不到任何关于如何将坐标转换为浮点数的信息,我在创建要在下面绘制的轨迹时datetime
使用该方法创建的绘图的本机转换。DataFrame.plot()
有什么简单的方法可以在生成的图上绘制补丁DataFrame.plot()
吗?