Quiero obtener líneas de cuadrícula horizontales y verticales en mi gráfico, pero solo las líneas de cuadrícula horizontales aparecen de forma predeterminada. Estoy usando unpandas.DataFrame
consulta de SQL en Python para generar una gráfica de línea con fechas en el eje x. No estoy seguro de por qué no aparecen en las fechas y he intentado buscar una respuesta a esto pero no pude encontrar una.
Todo lo que he usado para trazar el gráfico es el código simple a continuación.
data.plot()
grid('on')
data es el DataFrame que contiene las fechas y los datos de la consulta sql.
También intenté agregar el código a continuación, pero sigo obteniendo el mismo resultado sin líneas de cuadrícula verticales.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
¿Alguna sugerencia?
python
matplotlib
pandas
Obispo de Osmond
fuente
fuente
data.plot(grid="on")
trabajó para míRespuestas:
Puede que necesite dar un argumento booleano en sus llamadas, por ejemplo, use en
ax.yaxis.grid(True)
lugar deax.yaxis.grid()
. Además, dado que está utilizando ambos, puede combinarlosax.grid
, lo que funciona en ambos, en lugar de hacerlo una vez para cada dimensión.Eso debería arreglarte.
fuente
plt.show()
ipython --pylab
y hágalo deplt.grid(True)
inmediato: ¿ve la cuadrícula?plt.grid(True)
y obtuve el gráfico vacío con las líneas de cuadrícula vertical y horizontal, así que sí, es extraño por qué no puedo obtener esto para mi gráfico de líneas. Estoy ejecutando la última versión disponible de iPython.plt.gca().xaxis.grid(True)
resultó ser la solución para mífuente
myaxes.grid(which='x')
no estaba funcionando para mí con la versión 1.4.2 matplotlib ... no podía conseguir lawhich
palabra clave para el trabajo en absoluto. Sin embargo,myaxes.xaxis.grid(True)
hizo el truco y es conceptualmente mejor en mi opinión. Ah, y no se olvide delmyaxes.set_axisbelow(True)
método útil para poner la cuadrícula detrás de los datos.Según la documentación de matplotlib , la firma del método de
Axes
clasegrid()
es la siguiente:Entonces, para mostrar líneas de cuadrícula tanto para el eje x como para el eje y, podemos usar el siguiente código:
Este método nos da un control más preciso sobre qué mostrar para las líneas de la cuadrícula.
fuente
tal vez esto pueda resolver el problema: matplotlib, definir el tamaño de una cuadrícula en una parcela
La verdad es que la cuadrícula está funcionando, pero solo hay una cuadrícula en V en 00:00 y ninguna cuadrícula en las demás. Me encuentro con el mismo problema de que solo hay una cuadrícula el 1 de noviembre entre muchos días.
fuente
Respuesta corta (lea a continuación para obtener más información):
Lo que haces es correcto y debería funcionar.
Sin embargo, dado que el X eje en su ejemplo es un DateTime eje las principales casillas de marcas (muy probablemente) están apareciendo sólo en los dos extremos del eje X. Las otras marcas de graduación visibles son marcas de graduación menores .
El
ax.grid()
método, por defecto, dibuja líneas de cuadrícula en las marcas de graduación principales. Por tanto, no aparece nada en tu trama.Utilice el siguiente código para resaltar las marcas de verificación. Los mayores serán azules mientras que los menores serán rojos.
Ahora para forzar que las líneas de la cuadrícula aparezcan también en las marcas de graduación menores, pase
which='minor'
al método:o simplemente utilícelo
which='both'
para dibujar líneas de cuadrícula mayores y menores. Y esta es una línea de cuadrícula más elegante:fuente
Solo para líneas horizontales
Esto funcionó
fuente