J'utilise actuellement matplotlib.pyplot
pour créer des graphiques et aimerais que les lignes principales de la grille soient noires et solides et que les lignes mineures soient grisées ou en pointillés.
Dans les propriétés de la grille, which=both/major/mine
, puis la couleur et le style de trait sont définis simplement par style de trait. Existe-t-il un moyen de spécifier un style de ligne mineur uniquement?
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='-')
En fait, c'est aussi simple que de régler major
et 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 qu'il faut aussi activer les graduations mineures. Dans le code ci-dessus, cela est fait par yscale('log')
, mais cela peut aussi être fait avec plt.minorticks_on()
.
Une façon simple de bricoler serait de faire la grille vous-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()