如何将标题放在matplotlib中的数字底部?

时间:2016-07-04 00:05:37

标签: python matplotlib title figure

我使用matplotlib绘制具有四个子图的图形,(a) (b) (c) (d)方法将标题( fig = pyplot.figure()
ax = fig.add_subplot(1, 4, 1)
ax.set_title('(a)')
)放在每个子图的顶部,请参阅以下代码示例。

var error

但我想把每个标题放在每个子图的底部。我无法通过matplotlib文档和谷歌来弄清楚它。所以我需要你的帮助,非常感谢。

enter image description here

3 个答案:

答案 0 :(得分:5)

由于您不使用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

答案 1 :(得分:3)

这是一个小的python函数,可以绘制没有轴的图像。每个子图像底部的标题。 images 是一个n长度的数组,内存中的图像和标签是一个带有相应标题的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)"))

答案 2 :(得分:0)

如果您使用的是 ax,请使用以下行,然后调整 'y' 的值。

ax.set_title('(d)',y=-0.2,pad=-14)

您可以调整 y 值,这里我使用“负”值,因为我希望我的标签位于子图中的图形底部。

我还没有检查pad是什么。