Removing frame while keeping axes in pyplot subplots
Asked Answered
S

4

34

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?

Sacci answered 25/2, 2014 at 14:22 Comment(0)
E
39

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

Erotogenic answered 25/2, 2014 at 16:28 Comment(3)
If you happen to have polar plots, spines are defined differently, so per https://mcmap.net/q/450944/-turn-off-axis-border-for-polar-matplotlib-plot you need to do: a.spines['polar'].set_visible(False)Mummify
In Python 3, the for loop is even simpler: for a in ax:Entomostracan
@Erotogenic How would I keep the x-axis at the last subplot in the above code?Chassis
S
39

Try plt.box(on=None) It removed only the bounding box (frame) around plot, which is what I was trying to do.

plt.axis('off') removed tick labels and the bounding box, which wasn't what I was looking to accomplish.

Statistics answered 27/5, 2017 at 11:20 Comment(0)
B
6

You can achieve something like this with the axis('off') method of an axis handle. Is this the kind of thing you are after? (example code below the figure).

subplots without axes shown

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

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.axis('off')

plt.show()
Boundary answered 25/2, 2014 at 16:12 Comment(0)
A
4

Try

ax.set_frame_on(False)

It removes the box frame around any plot, but the x and y ticks remain.

Aberrant answered 2/1, 2023 at 17:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.