2011-06-17 82 views
169

matplotlibの図では、ax1.set_xticklabels()を使用して目盛りラベルのフォントサイズを小さくするにはどうすればよいですか?Matplotlibの目盛りラベルのフォントサイズを小さくする

さらに、水平から垂直にどのように回転させることができますか?

+0

感謝この質問をするために、私は今この問題を解決しようとしています。私はここで強く説得しているわけではないが、有権者が最良の答えが受け入れられたものではないと考えるように見える。どう思いますか? –

+0

matplotlibのフォントサイズを変更する方法が少なくとも5通りあることを正しく読んだことがありますか? :D – famargar

答えて

71

新しいバージョンのMPLにはこのタスクのショートカットがあります。この質問に対するもう1つの答えに例が示されています。https://stackoverflow.com/a/11386056/42346

以下のコードは、説明のためのものであり、必ずしも最適化されているとは限りません。

import matplotlib.pyplot as plt 
import numpy as np 

def xticklabels_example(): 
    fig = plt.figure() 

    x = np.arange(20) 
    y1 = np.cos(x) 
    y2 = (x**2) 
    y3 = (x**3) 
    yn = (y1,y2,y3) 
    COLORS = ('b','g','k') 

    for i,y in enumerate(yn): 
     ax = fig.add_subplot(len(yn),1,i+1) 

     ax.plot(x, y, ls='solid', color=COLORS[i]) 

     if i != len(yn) - 1: 
      # all but last 
      ax.set_xticklabels(()) 
     else: 
      for tick in ax.xaxis.get_major_ticks(): 
       tick.label.set_fontsize(14) 
       # specify integer or one of preset strings, e.g. 
       #tick.label.set_fontsize('x-small') 
       tick.label.set_rotation('vertical') 

    fig.suptitle('Matplotlib xticklabels Example') 
    plt.show() 

if __name__ == '__main__': 
    xticklabels_example() 

enter image description here

+53

脇の下として:目盛ラベルオブジェクトをループする代わりに、 'plt.setp'を使うことができます。 (また、 'ax.tick_params'を見てください)例えば、' plt.setp(ax.get_xticklabels()、rotation = 'vertical'、fontsize = 14) 'を実行するだけです。また、Axesオブジェクトには 'ax.is_last_row()'メソッドがあり、これはあなたの例のような場合に便利です。 'if i!= len ...'の代わりに、 'ax.is_last_row()'がなければ 'を行うことができます。 (なぜそれがメソッドなのか、私には何の手がかりもありません... Matplotlibはプロパティを嫌いです!) –

+0

@Joe:これは私の初めての 'is_last_row()'のヒアリングです、ありがとうございます!私は過去に 'plt.setp'を使ってきましたが、必ずしもそれが目盛ラベルをカスタマイズするより標準的な方法を表しているとは必ずしも言えませんでした。あなたはその疑いを取り除いた、ありがとう。より広義には、あなたの答えは、特に 'matplotlib'タグの中で、頻繁に私を畏敬の念にしています。これからもいい結果を出し続けてください。 – bernie

+0

ありがとう!!私は、特にあなたからの優しい言葉に感謝します! Canonicalは、この場合、非常に相対的です。 'plt.setp'は" matlab-ism "であり、明示的なループはおそらく非常に非常態です。 matlabに変換するので、私自身、 'setp'は自然な感じですが、それぞれ自分自身に感じます。どちらか一方が読みやすい、i.m.o。 –

304

実際に簡単な方法があります。私はちょうど見つかりました

import matplotlib.pyplot as plt 
# We prepare the plot 
fig = plt.figure(1) 
# We define a fake subplot that is in fact only the plot. 
plot = fig.add_subplot(111) 

# We change the fontsize of minor ticks label 
plot.tick_params(axis='both', which='major', labelsize=10) 
plot.tick_params(axis='both', which='minor', labelsize=8) 

あなたの質問のlabel部分のサイズにこれだけの答えは、しかし。あなたも、このような行でフォントサイズのようなラベル表示パラメータを変更することができます

13

:また

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()] 
37

、あなたがちょうどすることができます

import matplotlib as mpl 
label_size = 8 
mpl.rcParams['xtick.labelsize'] = label_size 
15

matplotlibの現在のバージョンでは、axis.set_xticklabels(labels, fontsize='small')を行うことができます。小さいフォントの場合

10

、私は

ax1.set_xticklabels(xticklabels、フォントサイズ= 7)

を使用して、それは働きます!

52

同時に両​​方のフォントサイズと回転を指定するには、これを試してみてください。

plt.xticks(fontsize=14, rotation=90) 
+3

これは最も簡単で簡単な答えです。 – user1271772

4

plt.tick_params(軸= '両方'、=これは 'マイナー'、labelsize = 12)

+0

これは、新しいラベルを設定せずにフォントサイズを変更する場合にのみ有効な唯一の回答です。 –

関連する問題