Pandas 如何从存储在数据框中的每个箱子的边缘和值生成热图?
我使用Pandas 如何从存储在数据框中的每个箱子的边缘和值生成热图?,pandas,matplotlib,seaborn,heatmap,Pandas,Matplotlib,Seaborn,Heatmap,我使用cut函数在数据帧中定义了2D bin边。我试图了解如何将这些箱子边缘和每个箱子的各种值转换为热图 我从iris数据集开始,对其进行UMAP投影,这样我就有了每个数据点的UMAPx和y坐标 我使用cut函数将其转换为网格单元,从而生成x和y方向的箱边。然后得到每个网格单元对应的特征的平均值 现在,一个人怎么能从这个转变成一个热图,比如一个海生热图?按特征提取该特征,第一个特征将是每个2D bin(UMAP\u x\u bin,UMAP\u y\u bin)的萼片长度(cm)平均值的热图
cut
函数在数据帧中定义了2D bin边。我试图了解如何将这些箱子边缘和每个箱子的各种值转换为热图
我从iris数据集开始,对其进行UMAP
投影,这样我就有了每个数据点的UMAP
x和y坐标
我使用cut
函数将其转换为网格单元,从而生成x和y方向的箱边。然后得到每个网格单元对应的特征的平均值
现在,一个人怎么能从这个转变成一个热图,比如一个海生热图?按特征提取该特征,第一个特征将是每个2D bin(UMAP\u x\u bin
,UMAP\u y\u bin
)的萼片长度(cm)平均值的热图
首先,您需要将
IntervalIndex
列转换为单值列
iris_df .UMAP_x_bin= iris_df .UMAP_x_bin.apply(lambda x: x.mid)
iris_df .UMAP_y_bin= iris_df .UMAP_x_bin.apply(lambda x: x.mid)
然后,必须将数据插值到值的二维网格上。
您可以使用scipy
进行此操作
from scipy.interpolate import griddata
points = np.c_[iris_df .UMAP_x_bin, iris_df .UMAP_y_bin]
values = iris_df ['sepal length (cm)_mean'].to_numpy()
# Choose the range appropriately.
gridx, gridy = np.mgrid[0:100, 0:100]
# interpolate.
data = griddata(points, values, (gridx, gridy), method = 'nearest')
# plot the heatmap
sns.heatmap(data)
注:根据UMap\u x\u bin
和UMap\u y\u bin
from scipy.interpolate import griddata
points = np.c_[iris_df .UMAP_x_bin, iris_df .UMAP_y_bin]
values = iris_df ['sepal length (cm)_mean'].to_numpy()
# Choose the range appropriately.
gridx, gridy = np.mgrid[0:100, 0:100]
# interpolate.
data = griddata(points, values, (gridx, gridy), method = 'nearest')
# plot the heatmap
sns.heatmap(data)