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