22

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()

読んでいる人には...show()を忘れないでください!フィギュアをリフレッシュする必要があることを忘れました。以下の出力を参照してください。

垂直ラベル付きの混同行列。http://up.stevetjoa.com/rotate_ticklabels.png

4

2 に答える 2

12

私があなたを正しく理解していれば、これはあなたを近づけるでしょう。ラベルを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')
于 2010-01-02T21:53:07.000 に答える
1

あなたの投稿を読んで、自分で試してみると、軸の上部に目盛りを設定する非常に簡単な方法が1つ見つかりました。 pylab.gca().tick_top()

乾杯!

于 2011-09-22T17:51:25.200 に答える