Подтвердить что ты не робот

Вертикальные ярлыки сверху, а не внизу

Я хочу построить матрицу путаницы, используя 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()

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

Конфликтная матрица с вертикальными метками. http://up.stevetjoa.com/rotate_ticklabels.png

4b9b3361

Ответ 1

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

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

Ура!