在 maptplotlib 中,可以使用 imshow 函数创建相关矩阵的热图表示。根据定义,这样的矩阵围绕其主对角线对称,因此不需要同时呈现上下三角形。例如:
(来源:wisc.edu)
上面的例子取自this site 不幸的是,我不知道如何在 matplotlib 中做到这一点。将矩阵的上/下部分设置为无会导致黑色三角形。我用谷歌搜索了“matplotlib 缺失值”,但找不到任何有用的东西
最佳答案
doug 提供的答案的问题在于它依赖于颜色图将零值映射到白色的事实。这意味着不包含白色的颜色图没有用处。解决的关键是 cm.set_bad
函数。您可以使用 None 或使用 NumPy 屏蔽数组和 set_bad
将矩阵中不需要的部分屏蔽为白色,而不是默认的黑色。采用 doug 的例子,我们得到以下结果:
import numpy as NP
from matplotlib import pyplot as PLT
from matplotlib import cm as CM
A = NP.random.randint(10, 100, 100).reshape(10, 10)
mask = NP.tri(A.shape[0], k=-1)
A = NP.ma.array(A, mask=mask) # mask out the lower triangle
fig = PLT.figure()
ax1 = fig.add_subplot(111)
cmap = CM.get_cmap('jet', 10) # jet doesn't have white color
cmap.set_bad('w') # default value is 'k'
ax1.imshow(A, interpolation="nearest", cmap=cmap)
ax1.grid(True)
PLT.show()
关于python - 仅绘制热图的上/下三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318529/