2015-01-05 14 views
15

Ho il seguente codice per tracciare una linea e un punto:Come tracciare un singolo punto dati?

df = pd.DataFrame({'x': [1, 2, 3], 'y': [3, 4, 6]}) 
point = pd.DataFrame({'x': [2], 'y': [5]}) 
ax = df.plot(x='x', y='y', label='line') 
ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point') 

Come faccio ad avere il punto di dati singolo di presentarsi?

Plot with line and no point

+0

Ok, grazie per la risposta. Esiste anche un metodo di tracciamento per singoli punti di dati? se sì, puoi chiamarlo? Grazie! –

+0

Peter, grazie per la tua domanda. L'ho modificato per renderlo un esempio minimo riproducibile. Se possibile, prova a farlo in futuro. Ho anche rimosso i tag delle serie temporali e di previsione (non era una domanda di modellazione) e ho aggiunto il tag pandas (poiché implica il tracciamento con 'pandas'). –

risposta

3

Nel tracciare un unico punto di dati, non è possibile tracciare utilizzando linee. Questo è ovvio se ci pensate, perché quando si tracciano le linee si plotterizza in realtà tra i punti di dati, quindi se si dispone di un solo punto dati non si ha nulla a cui collegare la linea.

È possibile tracciare singoli punti di dati utilizzando gli indicatori, di solito vengono tracciati direttamente sul punto dati e quindi non importa se si dispone di un solo punto dati.

Al momento si sta utilizzando

ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point') 

alla trama. Questo produce una linea rossa (r per il rosso, - per la linea). Se utilizzi il seguente codice, otterrai croci blu (b per il blu, x per un incrocio).

ax = point.plot(x='x', y='y', ax=ax, style='bx', label='point') 

pandas utilizza matplotlib internamente per la stampa, si possono trovare i vari argomenti di stile nelle tabelle here. Per scegliere tra i diversi stili (se, ad esempio, non si desideravano marcatori quando si hanno più punti dati), è sufficiente controllare la lunghezza del set di dati e quindi utilizzare lo stile appropriato.

+0

grazie! questo è quello che stavo cercando! buona giornata! –

+0

Non è inoltre necessario riassegnare 'ax'. –

39

per tracciare un unico punto che si può fare qualcosa di simile:

plt.plot([x], [y], marker='o', markersize=3, color="red") 
+0

Nota: puoi anche omettere le parentesi. – Karlo

+0

Penso che parte di ciò che OP vuole sia avere il punto anche nella legenda, dato il loro uso dell'argomento 'label' nel plottaggio dei panda. C'è un modo per farlo qui? Nel nuovo esempio riproducibile, questo non funziona: 'plt.plot (point ['x'], point ['y'], marker = 'o', markersize = 3, color = 'red', label = ' punto ') '. –

Problemi correlati