如何通过bin边缘和存储在Pandas数据框中的每个bin的值制作热图?

时间:2019-11-22 15:58:55

标签: pandas matplotlib seaborn heatmap

我使用Password_Prompt PassWindow = new Password_Prompt(); EventHandler handler = null; handler = (s, e) => { string password = PassWindow.Password; PassWindow.Closed -= handler; }; PassWindow.Closed += handler; PassWindow.Show(); 函数在Pandas数据框中定义了2D bin边缘。我正在尝试查看如何将这些bin边缘和每个bin的各种值转换为热图。

我从虹膜数据集开始,对其进行cut投影,以便每个数据点都有UMAP x和y坐标。

我使用UMAP函数将其转换为网格单元格,从而导致x和y中的bin边缘。然后我得到每个网格单元对应的特征的平均值。

现在,人们如何才能从中获得热图,例如Seaborn热图?逐个功能地使用此功能,第一个将是每个2D容器(cutsepal length (cm)_mean)的UMAP_x_bin值的热图。

UMAP_y_bin

1 个答案:

答案 0 :(得分:0)

首先,您需要将IntervalIndex列转换为Single value列。

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)

然后,您将必须将数据插值到2D值网格上。 您可以使用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)

  

PS。根据{{​​1}}和UMap_x_bin

的范围适当选择网格范围