回答:
MPLの新しいバージョンには、このタスクへのショートカットがあることに注意してください。例は、この質問の他の回答に示されています: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()
plt.setp
。(また、見てくださいax.tick_params
)たとえば、あなたはただ行うことができますplt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
。また、Axesオブジェクトには、ax.is_last_row()
例のような場合に便利なメソッドがあります。代わりにif i != len...
、あなたがすることができますif not ax.is_last_row()
。(なぜそれがメソッドなのか、私には手掛かりがありません... Matplotlibは明らかにプロパティを嫌っています!)
is_last_row()
ので、ありがとうございます!私はplt.setp
過去に使用したことがあり、目盛りラベルをカスタマイズするより標準的な方法を表しているとは必ずしも確信していませんでした。あなたはその疑いを取り除きました、ありがとう。より広く言えば、特にmatplotlib
タグの答えは、私を畏敬の念に陥らせることがよくあります。これからもいい結果を出し続けてください。
plt.setp
「MATLAB主義」であり、明示的なループはおそらくもっとPythonicです。私自身、Matlabの改宗者であることsetp
は自然なことですが、それぞれの人にとっては同じです。どちらも非常に読みやすいです
ax.tick_params(axis='x', labelsize=8)
get_ticklabels
ではないget_major_ticks
実際にはもっと簡単な方法があります。私が見つけたばかり:
import matplotlib.pyplot as plt
# We prepare the plot
fig, ax = plt.subplots()
# We change the fontsize of minor ticks label
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)
これlabel
はあなたの質問の一部のサイズにしか答えません。
axis = 'x'
または axis = 'y'
を使用して、軸の1つだけを変更します
フォントサイズと回転の両方を同時に指定するには、これを試してください:
plt.xticks(fontsize=14, rotation=90)
または、次のようにすることもできます。
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
plt.tick_params(axis='both', which='minor', labelsize=12)
ax.xaxis.set_tick_params(labelsize=20)
別の選択肢
2つのプロットを並べて表示し、目盛りラベルを個別に調整したいと思います。
上記の解決策は近いものでしたが、うまくいきませんでした。このmatplotlib ページから解決策を見つけました。
ax.xaxis.set_tick_params(labelsize=20)
これはトリックを実行し、ポイントにまっすぐでした。私の使用例では、調整する必要があるのは右側のプロットです。新しい目盛りラベルを作成してからの左側のプロットでは、ラベルを設定するのと同じプロセスでフォントを調整できました。
すなわち
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
したがって、私は正しいプロットに使用しました、
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
微妙な微妙さ...わかっています...しかし、これが誰かの役に立てば幸いです:)
大きさの大きさのラベルのフォントサイズを調整する方法を知っている人がいる場合は、ボーナスポイントになります。
fontsizeなどのラベル表示パラメータを次のような行で変更することもできます。
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
小さいフォントの場合は、
ax1.set_xticklabels(xticklabels, fontsize=7)
そしてそれはうまくいきます!