2010-01-02 2 views
17

필라블을 사용하여 혼란 행렬을 그려보고 싶습니다. 가로 축을 따르는 클래스 레이블은 길기 때문에 세로로 회전시켜 플롯해야합니다. 그러나, 나는 또한 그것들을 아래가 아닌 축의 꼭대기에 그려야한다.상단에 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

답변

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 당신이 그들을 상단 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') 
+0

신속한 답변을 부탁드립니다. 나는 불분명했다. 전체 그림 위에 레이블을 표시하려고합니다. 예를 들어 pylab.matshow()는이 작업을 수행하지만 레이블을 회전 할 수 없습니다. 특히 혼란 행렬이 클 때 특히 모든 것을 더 읽기 쉽게 만들어주기 때문에 회전시키는 것이 좋습니다. –

+0

@ 스티브 위의 편집 내용을 참조하십시오. – Mark

1

귀하의 게시물을 읽고, 자신에 의해 시도, 축 위에 틱을 설정하는 아주 간단한 방법이 하나 있습니다. pylab.gca().tick_top()

건배 !

+0

의견을 보내 주셔서 감사합니다. 그러나'tick_top'은 틱을 축의 맨 아래에서 맨 위로 이동합니다. 이것 또한'matshow'가하는 일입니다. 수직으로 회전시키지 않습니다. 그럼에도 불구하고'tick_top'은 알아두면 좋습니다! –

+1

matshow를 사용하지 않을 때 특히 흥미 롭습니다.) – PierreE

관련 문제