37 votes

Chevauchement de l'étiquette de l'axe des y et de l'étiquette de l'axe des x dans matplotlib

Si je crée un graphique avec matplotlib en utilisant le code suivant :

import numpy as np
from matplotlib import pyplot as plt
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.imshow()

J'obtiens un résultat qui ressemble à l'image ci-jointe. Le problème est le suivant l'étiquette y-tick la plus basse chevauche l'étiquette x-tick la plus gauche. Le site Ce n'est pas très professionnel. Je me demandais s'il existait un moyen automatique automatique de supprimer l'étiquette du y-tick le plus bas, afin de ne pas avoir le problème de chevauchement. Moins il y a de lignes de code, mieux c'est. enter image description here

36voto

bernie Points 44206

Dans le module ticker, il y a une classe appelée MaxNLocator qui peut prendre un prune kwarg.
En utilisant cela, vous pouvez enlever la première tique :

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
import numpy as np
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower'))
plt.show()

Résultat :

enter image description here

18voto

enrico.bacis Points 7085

Vous pouvez tamponner les tics sur l'axe des x :

ax.tick_params(axis='x', pad=15)

Remplacer ax avec plt.gca() si vous n'avez pas enregistré la variable ax pour le chiffre actuel.

Vous pouvez également rembourrer les deux axes en supprimant les axis paramètre.

6voto

Marius Points 188

Une façon très élégante de résoudre le problème de chevauchement est d'augmenter le remplissage des étiquettes detick x et y (c'est-à-dire la distance à l'axe). Il n'est pas toujours souhaitable de laisser de côté l'étiquette la plus en angle. À mon avis, en général, il est agréable que les étiquettes soient un peu plus éloignées de l'axe que dans la configuration par défaut.

Le padding peut être modifié via le fichier matplotlibrc ou dans votre script de plot en utilisant les commandes

import matplotlib as mpl

mpl.rcParams['xtick.major.pad'] = 8
mpl.rcParams['ytick.major.pad'] = 8

La plupart du temps, un rembourrage de 6 est également suffisant.

2voto

ACV Points 337

La réponse à cette question est détaillée ici . En gros, vous utilisez quelque chose comme ça :

plt.xticks([list of tick locations], [list of tick lables])

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