108 votes

comment activer les tics mineurs uniquement sur l'axe y matplotlib

Comment puis-je faire apparaître les tics mineurs uniquement sur l'axe des y sur un tracé linéaire vs linéaire ?

Lorsque j'utilise la fonction minor_ticks_on pour activer les tics mineurs, ils apparaissent sur les axes x et y.

76voto

emad Points 225

C'est bon, j'ai trouvé.

ax.tick_params(axis='x', which='minor', bottom=False)

34voto

John Vinyard Points 2425

Voici un autre moyen que j'ai trouvé dans le documentation de matplotlib :

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.show()

Ceci placera des tics mineurs sur uniquement l'axe des y, puisque les tics mineurs sont désactivés par défaut.

22voto

spinup Points 1425

Pour clarifier la procédure de la réponse de @emad, les étapes pour afficher les tics mineurs aux emplacements par défaut sont les suivantes :

  1. Active les ticks mineurs pour un objet axes, afin que les emplacements soient initialisés comme Matplotlib le juge bon.
  2. Désactivez les tics mineurs qui ne sont pas souhaités.

Un exemple minimal :

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2])

# Currently, there are no minor ticks,
#   so trying to make them visible would have no effect
ax.yaxis.get_ticklocs(minor=True)     # []

# Initialize minor ticks
ax.minorticks_on()

# Now minor ticks exist and are turned on for both axes

# Turn off x-axis minor ticks
ax.xaxis.set_tick_params(which='minor', bottom=False)

Méthode alternative

Alternativement, nous pouvons obtenir des tics mineurs aux emplacements par défaut en utilisant AutoMinorLocator :

import matplotlib.pyplot as plt
import matplotlib.ticker as tck

fig, ax = plt.subplots()
plt.plot([1,2])

ax.yaxis.set_minor_locator(tck.AutoMinorLocator())

Résultat

Dans tous les cas, le tracé résultant présente des tics mineurs sur l'axe des y uniquement.

plot with minor ticks on y-axis only

21voto

Evgeni Sergeev Points 1517

Pour définir des tics mineurs à des emplacements personnalisés :

ax.set_xticks([0, 10, 20, 30], minor=True)

5voto

marisano Points 327

De même, si vous ne souhaitez que des tics mineurs sur l'axe des y, plutôt que sur les côtés gauche et droit du graphique, vous pouvez suivre les instructions suivantes plt.axes().yaxis.set_minor_locator(ml) con plt.axes().yaxis.set_tick_params(which='minor', right = 'off') comme ça :

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.axes().yaxis.set_tick_params(which='minor', right = 'off')
plt.show()

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