I use matplotlib to plot a figure with four subfigures, and set_title
method put the title ( (a) (b) (c) (d)
) on the top of every subfigure, see the following code example.
fig = pyplot.figure()
ax = fig.add_subplot(1, 4, 1)
ax.set_title('(a)')
But I want to put every title at the bottom of every subfigure. I can't figure out it by the matplotlib document and google. So I need your help, thanks very much.
Since you're not using the x axis you can just simply set the xlabel to act as the title, should take care of the positioning:
ax.set_xlabel('this really is a title disguised as an x label')
Edit:
Try offsetting the title according to the figure height, I hope this works:
size = fig.get_size_inches()*fig.dpi # get fig size in pixels
ax.set_title('(a)', y=-size) # increase or decrease y as needed
Here is a small python function that plot images without axis. Titles at the bottom of each sub-image. images is a n-length array with the images in memory and labels is a n-length array with the corresponding titles:
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()
Example of usage
# code to load image_a and image_b
# ...
plot_image_array_gray((image_a, image_b), ("(a)", "(b)"))
Please use the following line if you are using ax, then adjust the value of 'y'.
ax.set_title('(d)',y=-0.2,pad=-14)
You can adjust the y value, here I use 'negative' value because I want my label to be on the bottom of the graph within subplot.
I have not check what is pad yet.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.