i am new to python's matplotlib and have to plot something, show images and add text underneath. What i have done so far is that (simplified example):
from matplotlib import pyplot as plt
from matplotlib import image as img
fig = plt.figure()
pic = img.imread("image path")
ax1 = fig.add_subplot(121)
ax1.plot()
ax1.set_yticks([0, 1, 2, 3, 4, 5])
ax1.set_xticks([0, 1, 2, 3, 4, 5])
ax1.annotate("Text", xy=(0, -0.12), xycoords="axes fraction")
ax1.annotate("More text", xy=(0, -0.17), xycoords="axes fraction")
ax1.annotate("Even more text", xy=(0, -0.22), xycoords="axes fraction")
ax1.annotate("1", xy=(1, -0.12), xycoords="axes fraction", ha="right")
ax1.annotate("2", xy=(1, -0.17), xycoords="axes fraction", ha="right")
ax1.annotate("3", xy=(1, -0.22), xycoords="axes fraction", ha="right")
ax2 = fig.add_subplot(122)
ax2.imshow(pic)
ax2.axis("off")
ax2.annotate("Text", xy=(0, -0.1), xycoords="axes fraction")
ax2.annotate("More text", xy=(0, -0.2), xycoords="axes fraction")
ax2.annotate("Even more text", xy=(0, -0.3), xycoords="axes fraction")
ax2.annotate("1", xy=(1, -0.1), xycoords="axes fraction", ha="right")
ax2.annotate("2", xy=(1, -0.2), xycoords="axes fraction", ha="right")
ax2.annotate("3", xy=(1, -0.3), xycoords="axes fraction", ha="right")
plt.subplots_adjust(bottom=0.18)
plt.show()
Problem: I would like to have both subplots vertically aligned, so that the text underneath both subplots is also vertically aligned. But images appear always "in the middle" (red pic in the middle of left plot and not same x axis). Is there a possibility to put the image on the x-axis of the plot or does anyone know a better way to add text underneath the two subplots (without annotate)?
What I tried:
- vary figsize: close but still not aligned (the plot is only squeezed)
- ax2.imshow(pic, aspect="auto"): this distorts my image