Removing frame while keeping axes in pyplot subplots

branwen85 picture branwen85 · Feb 25, 2014 · Viewed 44.7k times · Source

I am creating a figure with 3 subplots, and was wondering if there is any way of removing the frame around them, while keeping the axes in place?

Answer

mwaskom picture mwaskom · Feb 25, 2014

If you want to remove the axis spines, but not the other information (ticks, labels, etc.), you can do that like so:

fig, ax = plt.subplots(7,1, sharex=True)

t = np.arange(0, 1, 0.01)

for i, a in enumerate(ax):
    a.plot(t, np.sin((i + 1) * 2 * np.pi * t))
    a.spines["top"].set_visible(False)
    a.spines["right"].set_visible(False)
    a.spines["bottom"].set_visible(False)

or, more easily, using seaborn:

fig, ax = plt.subplots(7,1, sharex=True)

t = np.arange(0, 1, 0.01)

for i, a in enumerate(ax):
    a.plot(t, np.sin((i + 1) * 2 * np.pi * t))

seaborn.despine(left=True, bottom=True, right=True)

Both approaches will give you:

enter image description here