python中的单列热图

时间:2017-06-29 20:14:36

标签: python plot heatmap

我的目标是使用单列热图,但出于某种原因,如果我没有使用二维数组,我通常用于热图的代码并不起作用。

vec1 = np.asarray([1,2,3,4,5])
fig, ax = plt.subplots()
plt.imshow(vec1, cmap='jet')

我知道将单列矢量显示为热图是很奇怪的,但它对我来说是一个很好的视觉效果。我只想要一列彩色方块,我可以沿着y轴标记,以向人们显示排序的事物列表。

2 个答案:

答案 0 :(得分:1)

您可以使用Seaborn库来执行此操作。在Seaborn中,您可以识别要绘制的特定列。在这种情况下,你的阵列。以下内容应该完成您想要的内容

vec1 = np.asarray([1,2,3,4,5])
fig, ax = plt.subplots()
seaborn.heatmap([vec1])

然后你就像在pyplotlib中一样,只需在热图上进行格式化。

http://seaborn.pydata.org/generated/seaborn.heatmap.html

答案 1 :(得分:0)

previous answer开始,我想出了一种方法,该方法同时使用Seaborn和Matplotlib的transform来执行pavlov在其注释中要求的操作(即,即使在热图中交换轴Seaborn没有orientation参数。

让我们从上一个答案开始:

vec1 = np.asarray([1,2,3,4,5])
sns = heatmap([vec1])
plt.show()

在单个矢量上使用热图会产生以下结果:

enter image description here

好,让我们将x轴替换为y轴。为此,我们可以使用Affine2D变换,将其旋转90度。

from matplotlib import transforms

tr = transforms.Affine2D().rotate_deg(90)

让我们也对初始数组进行整形以使其类似于列向量:

vec2 = vec1.reshape(vec1.shape[0], 1)

现在,我们可以绘制热图并强制Matplotlib执行仿射变换:

sns.heatmap(vec2)
plt.show(tr)

结果图为:

enter image description here

现在,如果我们想将每一行强制为正方形,我们可以简单地使用square=True参数:

sns.heatmap(vec2, square=True)
plt.show(tr)

这是最终结果:

enter image description here

希望有帮助!