xticklabel - xticks matplotlib
Etiquetas verticales de xtick en la parte superior, no en la inferior. (2)
Quiero trazar una matriz de confusión usando Pylab. Las etiquetas de clase a lo largo del eje horizontal son largas, por eso quiero trazarlas rotadas verticalmente. Sin embargo, también quiero trazarlos en la parte superior del eje, no abajo.
Este comando puede trazar etiquetas verticales en la parte inferior:
pylab.imshow(confusion_matrix)
pylab.xticks(..., rotation=''vertical'')
y este comando puede trazar etiquetas horizontales en la parte superior sin rotación:
pylab.matshow(confusion_matrix)
Pero no puedo encontrar nada que haga ambas cosas. El siguiente comando no funciona.
pylab.matshow(confusion_matrix)
pylab.xticks(..., rotation=''vertical'')
¿Puede sugerir una manera de trazar una matriz de confusión con xticks en la parte superior del eje con rotación vertical? Gracias.
EDITAR
Gracias, Mark, por tu ayuda. Me puso en el camino correcto al inspeccionar las propiedades de la garrapata más de cerca. La única diferencia con tu respuesta y mi respuesta deseada es aplicar esa idea a una AxesImage, no a una trama. Después de la investigación, aquí está la respuesta:
im = pylab.matshow(confusion_matrix)
for label in im.axes.xaxis.get_ticklabels():
label.set_rotation(90)
im.figure.show()
A los que lean ... ¡no se olviden de show ()! Olvidé que necesitaba refrescar la figura. Vea la salida a continuación.
Matriz de confusión con etiquetas verticales. http://up.stevetjoa.com/rotate_ticklabels.png
Leyendo su publicación y probando por mi cuenta, encontré una forma muy sencilla de establecer las marcas en la parte superior de los ejes: pylab.gca().tick_top()
¡Aclamaciones!
Si te entiendo correctamente, esto te acercará. Es posible que tenga que ''rellenar'' sus etiquetas con espacios para moverlos fuera de la línea 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'')
EDITAR EN RESPUESTA AL COMENTARIO
Si quieres que giren verticalmente en el eje x superior, prueba esto:
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'')