【问题标题】:Vertical xtick labels on top, not bottom顶部的垂直 xtick 标签,而不是底部
【发布时间】:2010-12-31 20:21:12
【问题描述】:

我想使用 Pylab 绘制一个混淆矩阵。沿水平轴的类标签很长,所以我想将它们垂直旋转。但是,我也想将它们绘制在轴的顶部,而不是下方。

此命令可以在底部绘制垂直标签:

pylab.imshow(confusion_matrix)
pylab.xticks(..., rotation='vertical')

这个命令可以在顶部绘制水平标签而不旋转:

pylab.matshow(confusion_matrix)

但我找不到两者兼而有之的东西。以下命令不起作用。

pylab.matshow(confusion_matrix)
pylab.xticks(..., rotation='vertical')

您能否建议一种方法来绘制带有 xticks 的混淆矩阵并在垂直旋转的轴顶部?谢谢。

编辑

谢谢你,马克,你的帮助。通过更仔细地检查刻度属性,它让我走上了正确的轨道。您的答案和我想要的答案的唯一区别是将这个想法应用于 AxesImage,而不是情节。经过调查,答案如下:

im = pylab.matshow(confusion_matrix)
for label in im.axes.xaxis.get_ticklabels():
    label.set_rotation(90)
im.figure.show()

对于那些阅读...不要忘记 show()!我忘了我需要刷新这个数字。请参阅下面的输出。

Confusion matrix with vertical labels. http://up.stevetjoa.com/rotate_ticklabels.png

【问题讨论】:

    标签: matplotlib


    【解决方案1】:

    如果我对您的理解正确,这将使您接近。您可能需要用空格“填充”标签以将它们移出 x 轴线。

    from matplotlib import pylab 
    pylab.plot([0, 6], [0, 6])
    pylab.xticks([1,2,3,4,5,6],('one','two','three','four','five','six'),rotation='vertical',verticalalignment='bottom')
    

    针对评论进行编辑

    如果您希望它们在顶部 x 轴上垂直旋转,请尝试以下操作:

    pylab.plot([0, 6], [0, 6])
    pylab.xticks([1,2,3,4,5,6],('one','two','three','four','five','six'))
    for tick in pylab.gca().xaxis.iter_ticks():
        tick[0].label2On = True
        tick[0].label1On = False
        tick[0].label2.set_rotation('vertical')
    

    【讨论】:

    • 感谢您的及时回复。我不清楚。我正在尝试将标签绘制在整个图形的顶部。例如, pylab.matshow() 这样做,但标签不能旋转。旋转它们会非常好,因为它使所有内容都更具可读性,尤其是当混淆矩阵很大时。
    【解决方案2】:

    阅读您的帖子并自己尝试后,我发现了一种非常简单的方法,可以将刻度设置在轴的顶部: pylab.gca().tick_top()

    干杯!

    【讨论】:

    • 感谢您的评论。但是,tick_top 仅将刻度从轴底部移动到顶部。这也是matshow 所做的。它不会垂直旋转它们。不过,tick_top 很高兴知道!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2013-06-08
    相关资源
    最近更新 更多