2010-08-28 4 views
24

Estoy tratando de trazar un gráfico de log-log que muestra líneas de cuadrícula espaciadas logarítmicamente en todos los tics que ve en la parte inferior y en el lado izquierdo de la gráfica. Pude mostrar líneas de cuadrícula usando matplotlib.pyplot.grid(True), pero esto solo muestra líneas de cuadrícula para mí con una potencia de 10 intervalos. Así como ejemplo, aquí es lo que estoy recibiendo actualmente:¿Cómo se muestran líneas de cuadrícula espaciadas logarítmicamente en todos los ticks en un diagrama de registro y registro usando Matplotlib?

Alt text

Realmente me gustaría algo con líneas de cuadrícula en busca de la misma familia, donde las líneas de división no están uniformemente espaciadas:

Alt text

¿Cómo podría lograr esto en Matplotlib?

Respuesta

28

Básicamente, usted sólo tiene que poner en el parámetro which="both" en el comando cuadrícula de modo que se convierte en:

matplotlib.pyplot.grid(True, which="both") 

Otras opciones para los que se 'menor' y 'mayor' que son las principales garrapatas (que se muestran en tu gráfico) y los tics menores que te faltan. Si desea líneas continuas, puede usar ls="-" como parámetro en grid() también.

Aquí es un ejemplo para los retrocesos:

import numpy as np 
from matplotlib import pyplot as plt 

x = np.arange(0,100,.5) 
y = 2*x**3 

plt.loglog(x,y) 
plt.grid(True,which="both",ls="-") 
plt.show() 

que genera:

+2

He encontrado que en mi máquina usando "ambos" resultados no se muestran líneas de cuadrícula mayores o menores. Con un poco de google, encontré esta publicación: http://www.mailinglistarchive.com/html/[email protected]/2010-06/msg00174.html que parece sugerir que las versiones anteriores de matplotlib requieren el uso de " majorminor "en lugar de" both ". ¿Sabes si hay alguna documentación oficial de este cambio entre versiones? He visto http://matplotlib.sourceforge.net/api/api_changes.html, pero no parece haber ninguna mención de ello ... –

+0

@Bryce No tengo idea de cuándo entró en vigencia ese cambio. Generalmente solo uso la versión más nueva. En realidad, no soy tan hábil con matplotlib. –

+0

mirando uno de esos mensajes me hace pensar que sucedió el 9 de junio de 2010. No estoy seguro de qué versión sería, pero fue bastante reciente. –

4

Como dice @Bryce, en mi máquina de la kwarg correcta es majorminor. Creo que las líneas continuas con un color más claro pueden ser mejores que las líneas punteadas.

plt.grid(True,which="majorminor",ls="-", color='0.65') 

funciona para mí.

Cuestiones relacionadas