【问题标题】:Matplotlib matshow: show all tick labelsMatplotlib matshow:显示所有刻度标签
【发布时间】:2021-11-17 04:25:31
【问题描述】:

我是 Matplotlib 的新手,我使用 matshow 函数创建了一些数字相关性的热图。目前,下面的代码仅显示每 5 个标签(或刻度),我希望它显示所有这些。代码:

names = list('ABCDEDFGHIJKLMNOPQRSTU')

#just some random data for reproductability
df = pd.DataFrame(np.random.randint(0,100,size=(100, 22)), columns=names)

fig = plt.figure()
ax = fig.add_subplot(111)

cor_matrix = df.corr()

#these two lines don't change the outcome
ax.set_xticks(np.arange(len(names)))
ax.set_yticks(list(range(0,len(names))))

ax.matshow(cor_matrix)
plt.show()

结果如下所示:

我读到了这个问题:How to display all label values in matplotlib? 但是那里的答案对我不起作用。如果我没有明确设置刻度,或者以任何一种方式设置它们,这个数字就不会改变。

也试过这个问题的解决方案:How to make matplotlib show all x coordinates?plt.xticks(list(range(0,len(names)))),但也没有任何作用。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    matplotlib 函数的顺序导致了这个问题。通过在分配 x 和 y 刻度后调用 ax.matshow(cor_matrix),它们会再次被覆盖。通过更改顺序,一切都应该正常工作。

    新订单:

    names = list('ABCDEDFGHIJKLMNOPQRSTU')
    
    #just some random data for reproductability
    df = pd.DataFrame(np.random.randint(0,100,size=(100, 22)), columns=names)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    cor_matrix = df.corr()
    
    
    ax.matshow(cor_matrix)
    
    ax.set_xticks(np.arange(len(names), step=1))
    ax.set_yticks(list(range(0,len(names))))
    
    plt.show()
    

    输出:

    【讨论】:

      【解决方案2】:

      你可以使用MultipleLocator:

      from matplotlib.ticker import MultipleLocator  # <- HERE
      
      names = list('ABCDEDFGHIJKLMNOPQRSTU')
      
      #just some random data for reproductability
      df = pd.DataFrame(np.random.randint(0,100,size=(100, 22)), columns=names)
      
      fig = plt.figure()
      ax = fig.add_subplot(111)
      
      cor_matrix = df.corr()
      
      ax.matshow(cor_matrix)
      ax.yaxis.set_major_locator(MultipleLocator(1))  # <- HERE
      ax.xaxis.set_major_locator(MultipleLocator(1))  # <- HERE
      plt.show()
      

      【讨论】:

      • 谢谢,解决了。我实际上也尝试过,但我把它放在ax.matshow(cor_matrix) 行之前,这样它就什么都不做。
      • 是的,因为matshow 修改了 x 和 y 轴。所以你必须在 plot 函数之后覆盖它的设置。
      猜你喜欢
      • 2022-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多