仅绘制热图的上/下三角形

发布于 2021-01-29 17:05:36

在maptplotlib中,可以使用imshow函数创建相关矩阵的热图表示。根据定义,这样的矩阵围绕其主对角线是对称的,因此不需要同时显示上三角形和下三角形。例如:
相关矩阵

上面的示例取自该站点。
不幸的是,我无法弄清楚如何在matplotlib中执行此操作。将矩阵的上/下部分设置为“无”会生成黑色三角形。我在Google上搜索了“
matplotlib缺少值”,但是找不到任何有用的信息

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    doug提供的答案的问题在于,它依赖于色图将零值映射到白色这一事实。这意味着不包含白色的颜色图将无用。解决方案的关键是cm.set_bad功能。您可以使用None或NumPy掩码数组将矩阵的不需要部分掩码set_bad为白色,而不是默认的黑色。以道格为例,我们得到以下信息:

    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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看