Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create space between subplots? [duplicate]

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.

like image 897
KatieRose1029 Avatar asked Dec 08 '16 01:12

KatieRose1029


1 Answers

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()

enter image description here

increasing the width can be done with the wspace parameter:

... # same setup as before
fig.subplots_adjust(wspace=2)
plt.show()

enter image description here

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()

enter image description here

like image 82
MSeifert Avatar answered Sep 20 '22 11:09

MSeifert