繁体   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