単一の imshow
プロットであれば
fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24], [5, 15, 25] )
を使用して xtick ラベルを置き換えることができます。
現在、12個の imshow
プロットを使用しています。
f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)
これらのサブプロットの1つだけのために、どのようにしてxticksを変更することができますか?サブプロットの軸には axarr[i, j]
でしかアクセスできません。どのようにして特定のサブプロットのためだけに plt
にアクセスできますか?
2つの方法があります。
1.サブプロットオブジェクトの軸メソッド(例:ax.set_xticks
とax.set_xticklabels
)を使用する。
2.2. pyplotのステートマシン(すなわち、plt
インターフェース)の現在の軸を設定するためにplt.sca
を使用します。
例として(これはすべてのサブプロットのプロパティを変更するために setp
を使用することも示しています)。
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=3, ncols=4)
# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
yticks=[1, 2, 3])
# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')
fig.tight_layout()
plt.show()
.
matplotlibリポジトリの(かなり)最近のanswerを参照してください。そこでは以下のような解決策が提案されています。
xticklabelsを設定したい場合。
ax.set_xticks([1,4,5])
ax.set_xticklabels([1,4,5], fontsize=12)
xticklabels のフォントサイズだけを、デフォルトの値と位置を使って大きくしたい場合(これは個人的によく必要で、とても便利だと思っています)。
ax.tick_params(axis="x", labelsize=12)
全てを一度に行う場合。
plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold",
horizontalalignment="left")`。