Cómo crear líneas de cuadrícula principales y secundarias con diferentes estilos de línea en Python

Actualmente estoy usando matplotlib.pyplot para crear gráficos y me gustaría tener las líneas de cuadrícula principales sólidas y negras y las secundarias en gris o discontinua.

En las propiedades de la cuadrícula, which=both/major/mine , y luego color y linestyle se definen simplemente por linestyle. ¿Hay alguna forma de especificar solo el estilo de línea menor?

El código apropiado que tengo hasta ahora es

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

En realidad, es tan simple como configurar major y minor separado:

 In [9]: plot([23, 456, 676, 89, 906, 34, 2345]) Out[9]: [] In [10]: yscale('log') In [11]: grid(b=True, which='major', color='b', linestyle='-') In [12]: grid(b=True, which='minor', color='r', linestyle='--') 

El gotcha con cuadrículas menores es que también debes tener marcas de verificación menores activadas. En el código anterior, esto se hace mediante yscale('log') , pero también se puede hacer con plt.minorticks_on() .

introduzca la descripción de la imagen aquí

Una manera simple de hacer bricolaje sería hacer la cuadrícula usted mismo:

 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()