2015-01-05 18 views
15

Ich habe den folgenden Code, um eine Linie und einen Punkt zu zeichnen:Wie zeichnet man einen einzelnen Datenpunkt?

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') 

Wie kann ich die einzelnen Datenpunkt erhalten bis zu zeigen?

Plot with line and no point

+0

Ok, danke für deine Antwort. Existiert eine Zeichnungsmethode für einzelne Datenpunkte? Wenn ja, kannst du es benennen? Vielen Dank! –

+0

Peter, danke für deine Frage. Ich habe es bearbeitet, um es zu einem reproduzierbaren Minimalbeispiel zu machen. Wenn möglich, versuchen Sie es in Zukunft. Ich entfernte auch die Zeitreihen- und Prognose-Tags (dies war keine Modellierungsfrage) und fügte das Pandas-Tag hinzu (da es das Plotten mit "Pandas" beinhaltet). –

Antwort

3

Bei Verwendung eines einzelnen Datenpunkt Plotten, können Sie nicht zeichnen Linien. Dies ist offensichtlich, wenn Sie darüber nachdenken, denn beim Plotten von Linien plotten Sie tatsächlich zwischen Datenpunkten, und wenn Sie also nur einen Datenpunkt haben, dann haben Sie nichts, um Ihre Linie zu verbinden.

Sie können einzelne Datenpunkte jedoch mithilfe von Markern darstellen, die normalerweise direkt auf dem Datenpunkt dargestellt werden. Daher spielt es keine Rolle, ob Sie nur einen Datenpunkt haben.

Im Moment sind Sie

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

auf Grundstück mit. Dies erzeugt eine rote Linie (r für rot, - für Linie). Wenn Sie den folgenden Code verwenden, erhalten Sie blaue Kreuze (b für blau, x für ein Kreuz).

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

pandas verwendet matplotlib intern zum Plotten, können Sie die verschiedenen Stil Argumente in den Tabellen here finden. Um zwischen den verschiedenen Stilen zu wählen (wenn Sie beispielsweise bei mehreren Datenpunkten keine Markierungen möchten), können Sie einfach die Länge der Datenmenge überprüfen und dann den entsprechenden Stil verwenden.

+0

danke! das ist was ich gesucht habe! Einen schönen Tag noch! –

+0

Sie müssen auch "Axt" nicht neu zuweisen. –

39

Um einen einzelnen Punkt plotten Sie etwas tun können:

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

Hinweis: Sie können die Klammern auch weglassen. – Karlo

+0

Ich denke, ein Teil dessen, was OP will, ist, dass der Punkt auch in der Legende auftaucht, wenn man das Argument "Label" in Pandas benutzt. Gibt es eine Möglichkeit, das hier zu tun? Im neuen reproduzierbaren Beispiel funktioniert das nicht: "plt.plot (Punkt ['x'], Punkt ['y'], Marker = 'o', Markiergröße = 3, Farbe = 'Rot', Label = ' Punkt ') '. –

Verwandte Themen