2013-10-02 34 views
0

我根據我在熊貓數據框中保存的數據生成一些圖;什麼這個數據(稱之爲data)看起來像一個快照所示:當x軸使用日期時間座標時創建修補程序

     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 
... 

的曲線圖的一個想法是覆蓋在陰影頂部的TMPDPT領域的痕跡(通過使用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可能是更深的顏色,那樣我可以看看領域如何與其他領域同時發生變化。

我的想法是使用matplotlib.PatchesRectangle補丁來完成這個陰影。由於我基於TMPDPT的軌跡上的圖的邊界,我將始終知道貼片的高度是什麼,並且我也總是知道它的左邊界和它的寬度 - 但是皺紋是我知道他們在datetime座標,而不是在xy座標。所以,如果bnd_left是左邊界爲datetimeyloheight是彩車,和widthdatetime.timedelta,我想打個補丁一樣,

但是,這是行不通的。當補丁嘗試創建自己時有一個TypeError,因爲不能添加floatdatetime.timedelta。在文檔中,我找不到任何關於如何將datetime座標轉換爲我在創建我在下面繪製的軌跡時使用DataFrame.plot()方法創建的圖的本地轉換中的浮動。

有沒有簡單的方法在DataFrame.plot()生成的圖上繪製補丁?

回答

1

好吧,經過一些更深入的挖掘後出現了一個更簡單的解決方案 - 使用axvspan方法。但有一個警告。在Pandas v。0.12中,如果使用.ix屬性對DataFrameTimeseries進行切片,出於某種奇怪的原因,可以將格式設置爲x軸日期。在繪製時,必須使用my_dataframe.plot(ax=ax, x_compat=True)進行繪圖並自行配置刻度,否則axvspan的着色將不起作用。