python - 如何使用二维数组的索引通过 matplotlib/seaborn 生成热图?
问题描述
我有一个 2D numpy 数组 A ,其中包含与每个点对应的强度值。我正在尝试为这些点生成热图。例如,如果 A[3,0] 处的值为 230,那么我希望 x 值为 3、y 值为 0 的正方形对应于 230 的值。
我试过简单地使用 Seaborn 热图功能。
import numpy as np
import seaborn as sns
np.random.seed(0)
A = np.random.uniform(0,500,(4,3))
sns.heatmap(A, square=True)
其中 A 只是一个 4x3 numpy 随机值数组。然而,输出是一个看起来像矩阵 A 的区域。
这是一个 4x3 区域,其中每个点对应于矩阵 A 中的一个点(如果它被写出)。但我不确定如何获得它,以便我使用矩阵的实际索引作为点创建热图。考虑到的热图实际上是 3x4,类似于坐标平面的一部分,x 值为 [0,1,2,3],y 值为 [0,1,2]。
对不起,如果我解释得不好。我可能严重误解了热图的工作原理,但是有没有办法做到这一点(有或没有热图功能)?谢谢阅读。
解决方案
我认为您不会混淆热图是什么,而是数组的索引代表什么。在二维数组中,第一个索引是行,第二个索引是列。笛卡尔 x 和 y 坐标没有明确的概念。
也就是说,您可以通过创建数组transpose的热图,然后设置 x 轴和 y 轴的限制,使 (0, 0) 位于左下角来获得所需的内容。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
A = np.random.uniform(0,500,(4,3))
sns.heatmap(A.T, square=True)
plt.xlim(0, A.shape[0])
plt.ylim(0, A.shape[1])
plt.show()
推荐阅读
- upgrade - TYPO3:如何删除/禁用“compatibilityX”更新向导?
- mongodb - MongoDB:查询并不总是返回所有文档
- python - 如何计算季度差异并在python中添加缺失的季度与计数
- hubot - 如果 8080 被预先占用,Hubot 实际指向哪个端口?
- linux - H2O 连接错误:HTTP 403 禁止
- ios - UIButton.setTitle 没有将 UIButton.titleLabel.text 设置为空字符串
- apache-kafka - 如何在 Kafka Connect 中进行水平扩展
- jquery - 保留设置器控股后的复选框
- reactjs - 用于多页反应应用程序的 Redux 商店
- bash - 将按数字排序的文件移动到相应的按数字排序的目录中