Desejo obter linhas de grade horizontais e verticais em meu gráfico, mas apenas as linhas de grade horizontais aparecem por padrão. Estou usando uma pandas.DataFrame
consulta sql em python para gerar um gráfico de linha com datas no eixo x. Não sei por que eles não aparecem nas datas e tentei pesquisar uma resposta, mas não consegui encontrar.
Tudo o que usei para traçar o gráfico é o código simples abaixo.
data.plot()
grid('on')
data é o DataFrame que contém as datas e os dados da consulta sql.
Também tentei adicionar o código abaixo, mas ainda obtenho a mesma saída sem linhas de grade verticais.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
Alguma sugestão?
python
matplotlib
pandas
Osmond Bishop
fonte
fonte
data.plot(grid="on")
trabalhou para mimRespostas:
Você pode precisar fornecer arg booleano em suas chamadas, por exemplo, use em
ax.yaxis.grid(True)
vez deax.yaxis.grid()
. Além disso, como você está usando os dois, pode combinar emax.grid
, o que funciona em ambos, em vez de fazer isso uma vez para cada dimensão.Isso deve resolver você.
fonte
plt.show()
ipython --pylab
, e façaplt.grid(True)
imediatamente - você vê a grade?plt.grid(True)
e consegui o gráfico vazio com as linhas de grade verticais e horizontais, então sim, é estranho porque eu não consigo fazer isso para meu gráfico de linha. Estou executando a última versão disponível do iPython.plt.gca().xaxis.grid(True)
provou ser a solução para mimfonte
myaxes.grid(which='x')
não estava funcionando para mim com o matplotlib versão 1.4.2 ... não conseguia fazer awhich
palavra-chave funcionar. No entanto,myaxes.xaxis.grid(True)
fez o truque e é IMO conceitualmente melhor. Ah, e não se esqueça domyaxes.set_axisbelow(True)
método útil de colocar a grade por trás dos dados.De acordo com a documentação matplotlib , a assinatura do método de
Axes
classegrid()
é a seguinte:Portanto, para mostrar as linhas de grade para os eixos xey, podemos usar o seguinte código:
Este método nos dá um controle mais preciso sobre o que mostrar nas linhas de grade.
fonte
talvez isso possa resolver o problema: matplotlib, defina o tamanho de uma grade em um gráfico
A verdade é que a grade está funcionando, mas há apenas uma grade v às 00h00 e nenhuma grade nas outras. Eu encontro o mesmo problema de que há apenas uma grade em 1 de novembro entre muitos dias.
fonte
Resposta curta (leia abaixo para mais informações):
O que você faz é correto e deve funcionar.
No entanto, como o eixo X em seu exemplo é um eixo DateTime, as marcas de escala principais (mais provavelmente) estão aparecendo apenas nas duas extremidades do eixo X. Os outros tick-marcas visíveis são menores tick-marcas.
O
ax.grid()
método, por padrão, desenha linhas de grade nas marcas de escala principais. Portanto, nada aparece em seu enredo.Use o código abaixo para destacar as marcas. Os maiores serão azuis enquanto os menores serão vermelhos.
Agora, para forçar as linhas de grade a aparecerem também nas marcas de verificação secundárias, passe o
which='minor'
para o método:ou simplesmente use
which='both'
para desenhar linhas de grade principais e secundárias. E esta é uma linha de grade mais elegante:fonte
Apenas para linhas horizontais
Funcionou
fonte