【问题标题】:matplotlib axis labels not aligned with data binsmatplotlib 轴标签未与数据箱对齐
【发布时间】:2015-07-19 17:39:11
【问题描述】:

我正在尝试绘制一个相关矩阵,而不是作为标签的 bin 编号(请参阅 y 轴标签),我想要物理的实际单位(x 轴标签)。不幸的是,我无法将 xticks 与箱的中心对齐,我不明白为什么我在矩阵的每一列都没有标签。

下面的代码生成图形:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
labels =['', '0.13','0.20','0.32','0.50','0.79','1.26','2.00','3.16','5.01']
plt.xticks(range(len(labels)+1), labels, size='small')
#The '+1 in range seems needed as if I don't include it the first label is not displayed at all
plt.imshow(np.corrcoef(bootstrap_samples_matrix.transpose()), interpolation='nearest', cmap=plt.cm.Reds, extent=(0.5,10.5,0.5,10.5), align="center")
plt.colorbar()

【问题讨论】:

    标签: python matplotlib label axes


    【解决方案1】:

    要将 xticks 与 bin 的中心对齐,并且为了在矩阵的每一列都有一个标签,可以通过手动设置标签来实现。

    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    
    manual_labels =['0.20','0.32','0.50','0.79','1.26','2.00','3.16']
    ax.set_xticks([0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5])
    ax.set_xticklabels(manual_labels, minor=False)
    
    ax.set_yticks([0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5])
    ax.set_yticklabels(manual_labels, minor=False)
    

    【讨论】:

      【解决方案2】:

      您将 xticks 设置为标签定义的位置,但实际上它们并不相同。我认为您想将标签设置为实际位置,如下所示;

      替换:plt.xticks(range(len(labels)+1), labels, size='small')

      使用:ax.set_xticklabels(labels, minor=False)

      【讨论】:

      • 感谢您的回答,但看起来它并没有解决我的问题。即使我用随机字符串替换标签,结果也是一样的(即 xticks 不在标签定义的位置)。如有必要,我可以附上一张图片来说明我的观点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      相关资源
      最近更新 更多