首页 > 解决方案 > 如何从python中的两个一维数组中绘制相似度热图?

问题描述

我有两个数组如下,

a = np.array([5., 10., 20., 19., 1., 10., 60.])
b = np.array([7., 10., 10., 17., 20., 0., 50.])

我希望能够绘制一个热图,显示数组 a 与数组 b 的接近程度。如果可能,在鼠标悬停时显示 a 值和 b 值。例如,数组 a 中的 1 与数组 b 中的 20 不接近——应该是较浅的颜色,等等。知道从哪里开始吗?谢谢你。

标签: pythonmatplotlibplotlyheatmap

解决方案


你的数据代表什么?有很多方法可以比较事物并确定它们是否不同。您可以计算差异、比率等。如果没有更多上下文,就没有正确的方法来解决您的问题。

如果您的两个值应该成比例,我会将它们绘制为散点图,每个值都作为轴

import pandas as pd
a = np.array([5., 10., 20., 19., 1., 10., 60.])
b = np.array([7., 10., 10., 17., 20., 0., 50.])
df = pd.DataFrame({'a': a, 'b': b})
df.plot.scatter(x='a', y='b')

a vs b 散点图

你也可以使用seabornregplot

import seaborn as sns
ax = sns.regplot(data=df, x='a', y='b', robust=True)

a vs b 正则图

如果您真的想使用热图,我会选择集群图,因为这会将相似的值和不同的值分开:

sns.clustermap(df)

集群图

使用annot=True参数显示值:

带注释的集群图


推荐阅读