Matplotlib collega i punti del grafico a dispersione con la linea - Python


102

Ho due elenchi, date e valori. Voglio tracciarli usando matplotlib. Quanto segue crea un grafico a dispersione dei miei dati.

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 siano collegati da una linea.

Simile a in 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 lo faccio in Python?


5
Chiama show()dopo aver chiamato entrambi scatter()e plot()prima?

Risposte:


136

Penso che @Evert abbia la risposta giusta:

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

Che è più o meno lo stesso di

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

o qualunque sia lo stile di linea che preferisci.


3
'linestyle' è stato il buon indizio per la ricerca di parole chiave per me per passare attraverso i documenti matplotlib (gynormous).
Reb

2
@aaronsnoswell Dimensioni e colore hanno senso solo per i punti, che puoi ancora tracciare scatter, come nel mio primo esempio. La domanda non dice nulla su uno spessore di linea o colore variabile, quindi penso che la tua critica sia un po 'ingiusta, davvero.
Hannes Ovrén

28

Per linee rosse e punti

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

o per i marcatori x e le linee blu

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

Sembra che tu, Evert e Kigurai stiate bene. Puoi chiamare sia scatter () che plot () prima di chiamare show (). Oppure chiama semplicemente plot () con gli attributi linea e punto come descritto da Steve Barnes. Grazie
brno792

14

Oltre a quanto previsto nelle altre risposte, la parola chiave "zorder" permette di decidere l'ordine in cui i diversi oggetti vengono tracciati verticalmente. Per esempio:

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

traccia i simboli scatter in cima alla linea, mentre

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

traccia la linea sui simboli scatter.

Vedi, ad esempio, la demo di zorder

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.