代码之家  ›  专栏  ›  技术社区  ›  psoares

matplotlib matshow标签

  •  18
  • psoares  · 技术社区  · 14 年前

    我一个月前就开始使用matplotlib了,所以我还在学习。
    我在和matshow做热图。我的代码如下:

    data = numpy.array(a).reshape(4, 4)  
    cax = ax.matshow(data, interpolation='nearest', cmap=cm.get_cmap('PuBu'), norm=LogNorm())  
    cbar = fig.colorbar(cax)
    
    ax.set_xticklabels(alpha)  
    ax.set_yticklabels(alpha)
    

    问题是,我不知道为什么,标签'ABC'没有出现,留下最后一个细胞没有标签。
    如果有人知道如何修改我的脚本,使其看起来像“ABC”,我将不胜感激:)

    1 回复  |  直到 14 年前
        1
  •  59
  •   Joe Kington    14 年前

    当使用matshow时,xtick实际上扩展到显示的图形之外。)我不太清楚这到底是为什么。不过,我几乎从未使用过matshow。)

    要演示这一点,请查看 ax.get_xticks() . 你的情况是 array([-1., 0., 1., 2., 3., 4.]) . 因此,设置xtick标签时,“ABC”位于<-1、-1>,并且不显示在图形上。

    最简单的解决方案就是在标签列表前加一个空白标签,例如。

    ax.set_xticklabels(['']+alpha)
    ax.set_yticklabels(['']+alpha)
    

    作为一个完整的例子:

    import numpy as np
    import matplotlib.pyplot as plt
    
    alpha = ['ABC', 'DEF', 'GHI', 'JKL']
    
    data = np.random.random((4,4))
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    cax = ax.matshow(data, interpolation='nearest')
    fig.colorbar(cax)
    
    ax.set_xticklabels(['']+alpha)
    ax.set_yticklabels(['']+alpha)
    
    plt.show()
    

    Matshow example

        2
  •  3
  •   premes    4 年前

    ax.set_xticks ax.set_yticks

    import numpy as np
    import matplotlib.pyplot as plt
    
    alpha = ['ABC', 'DEF', 'GHI', 'JKL']
    
    data = np.random.random((4,4))
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    cax = ax.matshow(data, interpolation='nearest')
    fig.colorbar(cax)
    
    xaxis = np.arange(len(alpha))
    ax.set_xticks(xaxis)
    ax.set_yticks(xaxis)
    ax.set_xticklabels(alpha)
    ax.set_yticklabels(alpha)
    
    plt.show()
    

    enter image description here