簡體   English   中英

如何從帶有日期和時間軸的熊貓數據框創建熱圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM