2016-07-04 1 views
1

Я использую matplotlib для построения фигуры с четырьмя субфигурами, а метод set_title помещает заголовок ((a) (b) (c) (d)) в начало каждой подстройки, см. Следующий пример кода.Как поставить название в нижней части фигуры в matplotlib?

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

Но я хочу поставить каждое название в нижней части каждого подфигуры. Я не могу понять это с помощью документа matplotlib и google. Поэтому мне очень нужна ваша помощь.

enter image description here

ответ

4

Поскольку вы не используете х оси вы можете просто установить xlabel действовать в качестве заголовка, следует позаботиться о позиционировании:

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

Edit:

Попробуйте компенсировать заголовок в соответствии с высотой фигуры, я надеюсь, что это работает:

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

Это не может работать для моего случая, потому что мне нужно установить ось, так что xlabel не появляется. –

+0

Зачем это нужно? Вы можете установить его так, чтобы xlabel был названием, которое было моим первым предложением. Вы также можете попробовать второй, я отредактировал свой ответ. Я надеюсь, что это поможет – ifma

3

Вот небольшая функция python, которая обрабатывает изображения без оси. Заголовки внизу каждого суб-изображения. изображения является н-длина массива с изображениями в памяти и этикетки является н-длина массива с соответствующими названиями:

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)")) 
Смежные вопросы