簡體   English   中英

如何使用數據框中的散點圖數據制作熱圖?

[英]How do I make heatmap using scatter plot data from dataframe?

我有一個數據框,其中包含我的x和y數據(稍后將其轉換為列表),並且對於每個x,y,我都有三個屬性,它們是百分比(全部加起來為100%),例如,對於x,y第一個屬性是0.05,第二個屬性是0.45,第三個屬性是0.5。

         pc1       pc2      %_h        %_s      %_c  
0    -2.319093 -4.058990  0.718839  0.074559  0.206602  
1     1.514446 -2.324842  0.552632  0.157895  0.289474  
2    -2.431196 -1.938358  0.440313  0.071755  0.487932  
3    -2.642250 -1.001307  0.707883  0.058733  0.233385 
4    -1.486477 -2.537368  0.617834  0.151956  0.230209  
5    -1.990138 -3.457012  0.326633  0.088358  0.585008 
6    -0.844124 -3.081770  0.550000  0.113636  0.336364  
7    -2.376568 -1.471469  0.663071  0.196066  0.140863  
8    -3.139226  0.451762  0.696914  0.056173  0.246914  
    :

我的目標是制作某種熱圖,以繪制x(pc1),y(pc2)和每個屬性的范圍,因此較暗的部分將意味着特定屬性的密度較高。 以下是使用的熱圖:

plt.figure(figsize = (16,16))
plt.hist2d(pc1, pc2, bins=50, cmap=plt.cm.jet)
plt.show()

情節 但這是基於x,y點的密度,但是我希望它基於我的3個屬性,即紅色區域用於%h/%s/%c值較高的區域

我的研究說,這與將數據網格化並計算每個單元的頻率以獲得某種z維度有關。 我已經嘗試過: 用Matplotlib繪制2D熱圖,並: 使用散布數據集該圖僅基於2維在MatPlotLib中生成熱圖,並且沒有運氣。

我還想使用sns.jointmap功能為每個xy sns.jointmap三個屬性的密度的折線圖

編輯我認為該方法將是繪制一個熱圖,該熱圖表示第一個屬性,然后在另一個屬性上依次層疊。 但是我不確定如何設置熱圖的范圍來表示屬性,而不是x,y的密度計數?

編輯這是在嘗試建議的代碼之后。

情節2

您嘗試過pcolormesh嗎? 示例: https//matplotlib.org/3.1.1/gallery/images_contours_and_fields/pcolormesh_levels.html

fig, ax = plt.subplots() 
data = np.array([df['%_h'],df['%_s'],df['%_c']]).reshape(3,len(df))
cax =ax.pcolormesh(df.index, np.arange(0,3), data, shading = 'gouraud', cmap = 'jet')
fig.colorbar(cax)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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