サブプロットのPythonxticks


83

単一のimshowプロットをプロットすると、使用できます

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

xtickラベルを交換します。

今、私はをimshow使用して12のプロットをプロットしています

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

これらのサブプロットの1つだけでxticksを変更するにはどうすればよいですか?サブプロットの軸にアクセスできるのはaxarr[i, j]plt1つの特定のサブプロットだけにアクセスするにはどうすればよいですか?

回答:


161

2つの方法があります:

  1. サブプロットオブジェクト(ax.set_xticksおよびax.set_xticklabels)のaxesメソッドを使用するか、
  2. plt.scaピプロットステートマシン(つまり、pltインターフェイス)の現在の軸を設定するために使用します。

例として(これ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()

ここに画像の説明を入力してください


どのバージョンを使用していますか?私が得AttributeError: Unknown property xtickslabelsているplt.setp(ax, xtickslabels=xticks)
フレデリックノード

19

matplotlibリポジトリの(かなりの)最近の回答を参照してください。次の解決策が提案されています。

  • 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")`
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.