我有一个数据框,其中包含我的 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 热图 和:使用散点数据集在 MatPlotLib 中生成热图(这个仅基于 2 维)并且没有运气。
我还想使用类似sns.jointmap
特征的东西为每个 xy 的三个属性中的每一个的密度绘制折线图
编辑 我认为该方法是绘制一个表示第一个属性的热图,然后在另一个属性上叠加。但我不确定如何设置热图的范围以表示属性而不是 x,y 的密度计数?
编辑 这是在尝试建议的代码之后。