115 votes

Comment créer des lignes majeures et mineures avec des styles de lignes différents en Python ?

J'utilise actuellement matplotlib.pyplot pour créer des graphiques et j'aimerais que les lignes de grille principales soient pleines et noires et que les lignes secondaires soient grisées ou en pointillés.

Dans les propriétés de la grille, which=both/major/mine et la couleur et le style de ligne sont alors définis simplement par le style de ligne. Existe-t-il un moyen de spécifier uniquement le style de ligne mineur ?

Le code approprié que j'ai jusqu'à présent est

plt.plot(current, counts, 'rd', markersize=8)
plt.yscale('log')
plt.grid(b=True, which='both', color='0.65', linestyle='-')

166voto

joaquin Points 22450

En fait, c'est aussi simple que de définir major y minor séparément :

In [9]: plot([23, 456, 676, 89, 906, 34, 2345])
Out[9]: [<matplotlib.lines.Line2D at 0x6112f90>]

In [10]: yscale('log')

In [11]: grid(b=True, which='major', color='b', linestyle='-')

In [12]: grid(b=True, which='minor', color='r', linestyle='--')

Le problème avec les grilles mineures est que les coches mineures doivent également être activées. Dans le code ci-dessus, ceci est fait par yscale('log') mais on peut aussi le faire avec plt.minorticks_on() .

enter image description here

20voto

Zhenya Points 5885

Un moyen simple de bricolage serait de fabriquer la grille soi-même :

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot([1,2,3], [2,3,4], 'ro')

for xmaj in ax.xaxis.get_majorticklocs():
  ax.axvline(x=xmaj, ls='-')
for xmin in ax.xaxis.get_minorticklocs():
  ax.axvline(x=xmin, ls='--')

for ymaj in ax.yaxis.get_majorticklocs():
  ax.axhline(y=ymaj, ls='-')
for ymin in ax.yaxis.get_minorticklocs():
  ax.axhline(y=ymin, ls='--')
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