Skip to content

Instantly share code, notes, and snippets.

@LeoHuckvale
Created February 2, 2015 16:53
Show Gist options
  • Save LeoHuckvale/89683dc242f871c8e69b to your computer and use it in GitHub Desktop.
Save LeoHuckvale/89683dc242f871c8e69b to your computer and use it in GitHub Desktop.
matplotlib - Add subplots dynamically

Useful tip from the late creator of matplotlib, John Hunter.

http://matplotlib.1069221.n5.nabble.com/dynamically-add-subplots-to-figure-td23571.html

import matplotlib.pyplot as plt

# start with one
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])

# now later you get a new subplot; change the geometry of the existing
n = len(fig.axes)
for i in range(n):
    fig.axes[i].change_geometry(n+1, 1, i+1)

# add the new
ax = fig.add_subplot(n+1, 1, n+1)
ax.plot([4,5,6])

plt.show()
@GenjiHatakata
Copy link

GenjiHatakata commented Aug 22, 2024

@Splines thanks for this.
For self.fig.add_subplot there's an error with one single digit integer argument, so I needed to use the 3-argument signature:
new_ax = self.fig.add_subplot(gs[self.row], 1, gs[self.row])

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment