2013-04-18 22 views
44

Desidero ottenere sia linee orizzontali che verticali sulla trama ma solo le linee della griglia orizzontale vengono visualizzate per impostazione predefinita. Sto usando un pandas.DataFrame da una query sql in python per generare un grafico a linee con le date sull'asse x. Non sono sicuro del motivo per cui non appaiono nelle date e ho cercato di cercare una risposta a questo, ma non sono riuscito a trovarne uno.Visualizzazione della griglia verticale nel grafico a linee in matplotlib

Tutto quello che ho usato per tracciare il grafico è il semplice codice qui sotto.

data.plot() 
grid('on') 

data è il DataFrame che contiene le date e i dati dalla query sql.

Ho anche provato ad aggiungere il codice di seguito, ma ottengo ancora lo stesso output senza linee di griglia verticali.

ax = plt.axes()   
ax.yaxis.grid() # horizontal lines 
ax.xaxis.grid() # vertical lines 

Qualche suggerimento?

enter image description here

+0

'data.plot (grid = "on")' lavorato per me – Markus

risposta

52

Potrebbe essere necessario dare arg booleano nelle vostre chiamate, per esempio utilizzare ax.yaxis.grid(True) anziché ax.yaxis.grid(). Inoltre, dal momento che stai utilizzando entrambi, puoi combinarli in ax.grid, che funziona su entrambi, anziché eseguirlo una volta per ogni dimensione.

ax = plt.gca() 
ax.grid(True) 

Questo dovrebbe risolvere il problema.

+0

Ho provato, ma per qualche motivo sembra ancora lo stesso di prima –

+1

Stai facendo questo nell'interprete interattivo? Assicurati di aver impostato la griglia _before_ chiamando 'plt.show()' – wim

+0

Sto usando iPython. Ho provato ad aggiungere plt.mostra() non farà la differenza. –

23

plt.gca().xaxis.grid(True) dimostrato di essere la soluzione per me

+3

'myaxes.grid (which = 'x')' non funzionava con la versione 1.4.2 di matplotlib ... non riuscivo a far funzionare la parola chiave 'which'. Tuttavia, 'myaxes.xaxis.grid (True)' ha fatto il trucco ed è concettualmente migliore IMO. Oh, e non dimenticare l'utile metodo 'myaxes.set_axisbelow (True)' per mettere la griglia dietro ai dati. – travc

+0

Infine, questo è quello che cercavo da ogni altra parte! – Wok

3

forse questo può risolvere il problema: matplotlib, define size of a grid on a plot

ax.grid(True, which='both') 

La verità è che la griglia è in funzione, ma c'è solo una v-grid in 00 : 00 e nessuna griglia in altri. Incontro lo stesso problema che c'è una sola griglia in Nov 1 tra molti giorni.

0

According to matplotlib documentation, La firma del metodo Axes classe grid() è la seguente:

Axes.grid (b = n, che = 'maggiore', asse = 'entrambi', ** kwargs)
Attiva o disattiva le griglie degli assi.

which può essere "maggiore" (predefinito), "minore" o "entrambi" per controllare se le griglie di tick principali, le griglie di tick secondarie o entrambe sono interessate.

axis può essere "entrambi" (predefinito), "x" o "y" per controllare quale serie di linee griglia viene disegnata.

Quindi, al fine di mostrare le linee della griglia sia per l'asse xe l'asse y, possiamo usare il codice seguente:

ax = plt.gca() 
ax.grid(which='major', axis='both', linestyle='--') 
Problemi correlati