代码之家  ›  专栏  ›  技术社区  ›  Steve Tjoa

垂直X在顶部而不是底部单击标签

  •  20
  • Steve Tjoa  · 技术社区  · 14 年前

    我想用pylab绘制一个混淆矩阵。沿水平轴的类标签很长,所以我想将它们垂直旋转打印出来。不过,我也希望将它们绘制在轴的顶部,而不是下面。

    此命令可以在底部打印垂直标签:

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

    此命令可以在顶部打印水平标签,而无需旋转:

    pylab.matshow(confusion_matrix)
    

    但我找不到任何东西能同时做到这两个。以下命令不起作用。

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

    你能建议一种在垂直旋转轴的顶部绘制X轴的混淆矩阵的方法吗?谢谢您.

    编辑

    谢谢你,马克,谢谢你的帮助。通过更仔细地检查蜱虫的特性,我走上了正确的道路。你的答案和我想要的答案唯一的区别是把这个想法应用到一个图像上,而不是一个情节上。经过调查,答案如下:

    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

    2 回复  |  直到 7 年前
        1
  •  12
  •   Mark    7 年前

    如果我没听错的话,这会让你更亲近。您可能必须用空格将标签“填充”出来,才能将它们从xaxis行移开。

    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')
    
        2
  •  1
  •   Jeru Luke    7 年前

    读了你的帖子,我自己试了一下,发现了一个非常简单的方法,可以将记号放在轴的顶部: pylab.gca().tick_top()

    干杯!