2010-01-02 2 views
17

Я хочу построить матрицу путаницы, используя Pylab. Ярлыки классов вдоль горизонтальной оси длинны, поэтому я хочу, чтобы они вращались по вертикали. Тем не менее, я также хочу построить их поверх оси, а не ниже.Вертикальные ярлыки сверху, а не внизу

Эта команда может построить вертикальные надписи на дне:

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

и эта команда может построить горизонтальные метки на вершине без вращения:

pylab.matshow(confusion_matrix) 

, но я не могу найти ничего, что делает оба. Следующая команда не работает.

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

Можете ли вы предложить способ построить матрицу путаницы с xticks на верхней части оси с вертикального вращения? Спасибо.

EDIT

Спасибо, Марк, за вашу помощь. Это привело меня к правильному пути, внимательно изучив свойства тика. Единственное отличие от вашего ответа и моего желаемого ответа - применить эту идею к AxesImage, а не к сюжету. После расследования, вот ответ:

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

Для тех, кто читает ... не забывайте о шоу()! Я забыл, что мне нужно обновить фигуру. См. Вывод ниже.

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

ответ

10

Если я вас правильно понял, это поможет вам закрыть. Возможно, вам придется «набивать» свои ярлыки пробелами, чтобы переместить их с линии 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') 

EDIT В ответ на комментарий

Если вы хотите, чтобы они повернуты вертикально на верхней оси х, попробуйте следующее:

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') 
+0

Благодарим вас за быстрый ответ. Я был неясен. Я пытаюсь построить надписи поверх всей фигуры. Например, pylab.matshow() делает это, но метки не могут быть повернуты. Было бы неплохо повернуть их, потому что это делает все более читаемым, особенно когда матрица путаницы большая. –

+0

@Steve, см. Правки выше. – Mark

1

Чтение свой пост, и пытается сам, Я нашел один очень простой способ установки тиков сверху по осям: pylab.gca().tick_top()

Cheers !

+0

Спасибо за ваш комментарий. Однако 'tick_top' только перемещает тики от нижней части оси вверх. Это также то, что делает «matshow». Он не вращает их по вертикали. Тем не менее, 'tick_top' приятно знать! –

+1

Это особенно интересно, когда вы не используете matshow;) – PierreE

Смежные вопросы