2013-11-21 25 views
52

Ho due elenchi, date e valori. Voglio tracciarli usando Matplotlib. Quanto segue crea un grafico a dispersione dei miei dati.Matplotlib collega i punti dello scatterplot con la linea - Python

import matplotlib.pyplot as plt 

plt.scatter(dates,values) 
plt.show() 

plt.plot(dates, values) crea un grafico a linee.

Ma quello che voglio veramente è uno scatterplot in cui i punti sono collegati da una linea.

simile al R:

plot(dates, values) 
lines(dates, value, type="l") 

, che mi dà un grafico a dispersione di punti sovrapposti con una linea che collega i punti.

Come posso farlo in python?

+2

chiamata 'show()' dopo la chiamata sia 'scatter()' e 'plot()' prima? – Evert

risposta

77

penso @Evert ha la risposta giusta:

plt.scatter(dates,values) 
plt.plot(dates, values) 
plt.show() 

che è praticamente lo stesso di

plt.plot(dates, values, '-o') 
plt.show() 

o qualsiasi altro linestyle che preferisci.

+1

'linestyle' è stata la buona idea per la ricerca di parole chiave che mi ha permesso di passare attraverso i (maturi) documenti matplotlib. –

18

Per linee rosse un punti

plt.plot(dates, values, '.r-') 

o per i marcatori x e linee blu

plt.plot(dates, values, 'xb-') 
+0

Sembra che tu, Evert e kigurai stiate bene. Puoi chiamare sia scatter() che plot() prima di chiamare show(). Oppure chiama solo plot() con gli attributi line e point come descritto da Steve Barnes. Grazie – brno792

7

In aggiunta a quanto previsto nelle altre risposte, la parola chiave "zorder" consente di decidere l'ordine in cui vengono tracciati verticalmente diversi oggetti. Es .:

plt.plot(x,y,zorder=1) 
plt.scatter(x,y,zorder=2) 

trame i simboli scatter sulla parte superiore della linea, mentre

plt.plot(x,y,zorder=2) 
plt.scatter(x,y,zorder=1) 

trame della linea sopra i simboli scatter.

Si veda ad esempio, il zorder demo

Problemi correlati