顶部垂直xtick标签,而不是底部
我想用Pylab绘制一个混淆矩阵。沿水平轴的类标签很长,所以我想绘制它们垂直旋转。不过,我也想将它们绘制在轴的上方,而不是下方。顶部垂直xtick标签,而不是底部
此命令可以在底部绘制垂直标签:
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
如果我理解正确的话,这将让你关闭。您可能必须用空格将您的标签“填充”出来,以将它们从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')
读您的文章,并通过自己的努力,我发现一个非常简单的方法来设置坐标轴上的刻度: pylab.gca().tick_top()
干杯!
感谢您的评论。但是,'tick_top'只会将轴的底部的滴答移到顶部。这也是'matshow'所做的。它不会垂直旋转它们。不过,'tick_top'很好理解! – 2011-09-23 05:41:12
当你不使用matshow时特别有趣;) – PierreE 2012-01-13 10:22:06
感谢您的及时回复。我不清楚。我试图在整个图上绘制标签。例如,pylab.matshow()这样做,但标签不能旋转。旋转它们会非常好,因为它使得所有内容更具可读性,尤其是当混淆矩阵很大时。 – 2010-01-02 23:28:29
@Steve,请参阅上面的编辑。 – Mark 2010-01-03 00:22:16