web-dev-qa-db-ja.com

matplotlibの図の下部にタイトルを付ける方法は?

Matplotlibを使用して、4つの部分図を含む図をプロットし、set_titleメソッドはタイトルを付けます((a) (b) (c) (d))すべてのサブフィギュアの上部にある、次のコード例を参照してください。

fig = pyplot.figure()
ax = fig.add_subplot(1, 4, 1)
ax.set_title('(a)')

しかし、すべてのサブフィギュアの一番下にすべてのタイトルを付けたいと思います。 matplotlibドキュメントとグーグルではわかりません。だから、私はあなたの助けが必要です、どうもありがとう。

enter image description here

8
Huayi Wei

X軸を使用していないので、xlabelをタイトルとして機能するように設定するだけで、配置に注意する必要があります。

ax.set_xlabel('this really is a title disguised as an x label')

編集:

図の高さに応じてタイトルをオフセットしてみてください、これがうまくいくことを願っています:

size = fig.get_size_inches()*fig.dpi # get fig size in pixels
ax.set_title('(a)', y=-size) # increase or decrease y as needed
5
ifma

以下は、小さなpython軸なしで画像をプロットする関数です。各サブ画像の下部にあるタイトルです。imagesは、メモリ内の画像を含む長さnの配列ですそしてlabelsは対応するタイトルを持つn長の配列です:

from matplotlib import pyplot

def plot_image_array_gray(images, labels):
  for i in range(0, len(labels)):
    ax = pyplot.subplot(1, len(labels), i + 1)
    pyplot.axis('off')
    pyplot.text(0.5, -0.1, labels[i], \
      horizontalalignment='center', verticalalignment='center', \
      transform=ax.transAxes)
    pyplot.imshow(images[i], cmap=pyplot.cm.gray)

  pyplot.tight_layout()
  pyplot.show()

使用例

# code to load image_a and image_b 
# ...
plot_image_array_gray((image_a, image_b), ("(a)", "(b)"))
3
Lucho