185 votes

Comment puis-je supprimer l'axe supérieur et l'axe droit dans matplotlib ?

Au lieu du style d'axe "encadré" par défaut, je veux avoir uniquement les axes gauche et inférieur, c'est-à-dire.. :

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

Cela devrait être facile, mais je ne trouve pas les options nécessaires dans la documentation.

228voto

divenex Points 5192

Voici la solution suggérée pour Matplotlib 3 à partir du site officiel AQUÍ :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

enter image description here

68voto

timday Points 14860

Par ailleurs, cette

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

semble obtenir le même effet sur un axe sans perdre le support des étiquettes tournées.

(Matplotlib 1.0.1 ; solution inspirée de este ).

33voto

Autoplectic Points 4581

[edit] matplotlib est maintenant (2013-10) en version 1.3.0 qui inclut ceci

Cette capacité vient d'être ajoutée, et vous avez besoin de la version Subversion pour cela. Vous pouvez voir l'exemple de code aquí .

Je mets juste à jour pour dire qu'il y a une meilleure exemple en ligne maintenant. J'ai toujours besoin de la version Subversion, il n'y a pas encore eu de version avec cela.

[Matplotlib 0.99.0 RC1 vient d'être publié et inclut cette fonctionnalité.

0 votes

Assurez-vous de lire l'avertissement à matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/ Avant d'essayer d'utiliser le système ci-dessus avec, par exemple, des étiquettes tournées, il est important de savoir que le support des marques de tic-tac est incomplet !

0 votes

Il semble que cela dépende de la façon dont vous construisez l'axe. Les axes générés par mpl.subplots ne peut être utilisé de cette façon ?

8 votes

Le lien de l'exemple est maintenant rompu.

21voto

Evgeni Sergeev Points 1517

(Il s'agit plutôt d'un commentaire d'extension, en plus des réponses complètes ici).


Notez que nous pouvons masquer chacun de ces trois éléments indépendamment les uns des autres :

  • Pour masquer la bordure (alias "colonne vertébrale") : ax.set_frame_on(False) o ax.spines['top'].set_visible(False)

  • Pour cacher les tiques : ax.tick_params(top=False)

  • Pour cacher les étiquettes : ax.tick_params(labeltop=False)

16voto

hhh Points 100

Si vous devez le supprimer de tous vos tracés, vous pouvez supprimer les épines dans les paramètres de style (feuille de style ou rcParams). Par exemple

import matplotlib as mpl

mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False

Si vous voulez enlever toutes les épines :

mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X