web-dev-qa-db-fra.com

Suppression du cadre tout en conservant les axes dans les sous-tracés pyplot

Je crée une figure avec 3 sous-intrigues, et je me demandais s'il y avait un moyen de supprimer le cadre autour d'eux, tout en maintenant les axes en place?

18
branwen85

Si vous souhaitez supprimer les épines de l'axe, mais pas les autres informations (graduations, étiquettes, etc.), vous pouvez le faire comme suit:

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)

ou, plus facilement, en utilisant 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)

Les deux approches vous donneront:

enter image description here

22
mwaskom

Essayez plt.box(on=None) Il a supprimé niquement la boîte englobante (cadre) autour de l'intrigue, ce que j'essayais de faire.

plt.axis('off') a supprimé les étiquettes de tick et la boîte englobante, ce qui n'était pas ce que je cherchais à accomplir.

J'espère que cela t'aides.

21
Ben Miller

Vous pouvez obtenir quelque chose comme ça avec la méthode axis('off') d'une poignée d'axe. Est-ce le genre de chose que vous recherchez? (exemple de code sous la 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
Bonlenfum