I want to have horizontally aligned 3D and 2D plots, where the y-axis of the 2D plot is the same height as the z-axis of the 3D plot. The following code produces a default output:
import matplotlib.pyplot as plt
fig = plt.figure()
fig.set_size_inches(10, 4)
fig.subplots_adjust(wspace=0.5)
# 3D surface plot
ax1 = fig.add_subplot(121, projection="3d")
ax1.set(zlabel="Value")
# 2D line plot
ax2 = fig.add_subplot(122)
ax2.set(ylabel="Value")
plt.show()
I want to shrink down the right hand side 2D subplot so that the y-axis ("Value") is a similar height to (or preferably the same height as) the z-axis ("Value") on the 3D plot (ideally I want them to line up).
I haven't been able to find a way to change subplot sizes independently like this in matplotlib (setting relative ratios and gridspec
don't seem able to achieve this).
Any help would be much appreciated.
You can use set_position() to change the dimensions of one of the subplot:
plt.figure(1).axes[1].set_position([0.6,0.4,0.25,0.3]) # left, bottom, width, height