I have a script that plots point correspondences between images:
import matplotlib.pyplot as plt import numpy as np from matplotlib.patches import ConnectionPatch, Rectangle dpi = 100 fontsize = 8 offset = 0 img_size = (235, 190) image_1 = np.zeros(img_size) image_2 = np.zeros(img_size) num_points = 50 points_x_1 = np.random.randint(190, size=(num_points,)) points_y_1 = np.random.randint(235, size=(num_points,)) points_x_2 = np.random.randint(190, size=(num_points,)) points_y_2 = np.random.randint(235, size=(num_points,)) fig, axes = plt.subplots(1, 2, figsize=(2 * img_size[1] / dpi, (img_size[0] + offset) / dpi), dpi=dpi) axes[0].imshow(image_1) axes[1].imshow(image_2) colors = np.random.randint(256, size=(num_points, 3)) / 255.0 axes[0].scatter(points_x_1, points_y_1, s=20, c=colors) axes[1].scatter(points_x_2, points_y_2, s=20, c=colors) for i in range(num_points): point_1 = (points_x_1[i], points_y_1[i]) point_2 = (points_x_2[i], points_y_2[i]) con = ConnectionPatch(xyB=point_1, xyA=point_2, coordsB="data", coordsA="data", axesB=axes[0], axesA=axes[1], color=colors[i], linewidth=1) axes[1].add_artist(con)
This results with an overlap of the axes ticks of one image with the other.
When I try to add fig.tight_layout()
at the end of the script the image’s size is drastically diminished:
Is it possible to keep the images large and avoid the ticks overlapping?
Thanks!
Advertisement
Answer
As mentioned by @JohanC, removing fig.tight_layout()
and replacing it with fig.subplots_adjust(wspace=0.3)
did the trick.