Removing frame while keeping axes in pyplot subplo

2020-05-22 15:53发布

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?

3条回答
老娘就宠你
2楼-- · 2020-05-22 16:42

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.

Hope this helps.

查看更多
甜甜的少女心
3楼-- · 2020-05-22 16:43

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()
查看更多
做自己的国王
4楼-- · 2020-05-22 16:47

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

查看更多
登录 后发表回答