The title pretty much says it all. I have a notebook containing two subplots and would like to create some space between them. They look too close to one another per say.
With matplotlib.Figure.subplots_adjust
:
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot([1,2,3], [1,2,3])
ax2.plot([1,2,3], [3,2,1])
plt.show()
increasing the width can be done with the wspace
parameter:
... # same setup as before
fig.subplots_adjust(wspace=2)
plt.show()
If you want to have even more control over the positioning of the axes
then you can specify the offset (bottom and left) and the extend (width and height) of each of the axes as percentages of the figure.
It involves a bit of calculation to get right though:
import matplotlib.pyplot as plt
# All have the same lower border, height and width, only the distance to
# the left end of the figure differs
bottom = 0.05
height = 0.9
width = 0.15 # * 4 = 0.6 - minus the 0.1 padding 0.3 left for space
left1, left2, left3, left4 = 0.05, 0.25, 1 - 0.25 - width, 1 - 0.05 - width
rectangle1 = [left1, bottom, width, height]
rectangle2 = [left2, bottom, width, height]
rectangle3 = [left3, bottom, width, height]
rectangle4 = [left4, bottom, width, height]
# Create a 8 x 8 (quadratic) figure
plt.figure(1, figsize=(8, 8))
// Create 4 axes their position and extend is defined by the rectangles
ax1 = plt.axes(rectangle1)
ax2 = plt.axes(rectangle2)
ax3 = plt.axes(rectangle3)
ax4 = plt.axes(rectangle4)
# Let's display something in these axes.
ax1.plot([1,2,3,4])
ax2.plot([4,3,2,1])
ax3.plot([4,3,2,1])
ax4.plot([1,2,3,4])
plt.show()