[英]How to create heatmap from pandas dataframe with date and time axes?
我正在嘗試像這樣從熊貓數據幀創建熱圖
datetime
2008-12-31 21:15:00 0
2008-12-31 21:45:00 0
2008-12-31 22:15:00 0
2008-12-31 22:45:00 0
2008-12-31 23:15:00 0
2008-12-31 23:45:00 0
2009-01-01 00:15:00 0
2009-01-01 00:45:00 0
2009-01-01 01:15:00 0
2009-01-01 01:45:00 0
...
Freq: 30T, Name: GHI, dtype: int64
數據框可以有數十萬行。 然后,我可以創建2d數組並將其繪制:
array2d = pd.pivot(index=df.index.time, columns=df.index[:].date, values=df.values)
ax.pcolormesh(array2d,cmap='jet')
Array2d:
2008-12-31 2009-01-01 ... 2009-12-30 2009-12-31
00:15:00 NaN 0.0 ... 0.0 0.0
00:45:00 NaN 0.0 ... 0.0 0.0
01:15:00 NaN 0.0 ... 0.0 0.0
01:45:00 NaN 0.0 ... 0.0 0.0
02:15:00 NaN 0.0 ... 0.0 0.0
02:45:00 NaN 0.0 ... 0.0 0.0
03:15:00 NaN 0.0 ... 0.0 0.0
03:45:00 NaN 0.0 ... 0.0 0.0
...
[48 rows x 366 columns]
我的情節如下所示:
但是我想在x和y軸上使用array2d
而不是數字的日期和時間。 謝謝
是否添加:
ax.set_yticklabels(array2d.index)
ax.set_xticklabels(array2d.columns) # may require .values at the end
您的代碼工作? 您尚未指定x和y刻度標簽,因此matplotlib
使用的是數字值,而不是您希望的日期/時間。 您可能需要使用ax.set_xticks()
更改x和y刻度的數量。
這樣的事情具有同等的影響,但是允許您設置刻度的數量和標簽:
plt.pcolor(array2d)
plt.yticks(np.arange(1, len(array2d.index), 10), arra2d.index)
plt.xticks(np.arange(1, len(array2d.columns), 10), array2d.columns)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.