Matplotlib verbindet Streudiagrammpunkte mit der Linie - Python


102

Ich habe zwei Listen, Daten und Werte. Ich möchte sie mit matplotlib zeichnen. Im Folgenden wird ein Streudiagramm meiner Daten erstellt.

import matplotlib.pyplot as plt

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

plt.plot(dates, values) erstellt ein Liniendiagramm.

Aber was ich wirklich will, ist ein Streudiagramm, in dem die Punkte durch eine Linie verbunden sind.

Ähnlich wie in R:

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

, was mir ein Streudiagramm von Punkten gibt, die mit einer Linie überlagert sind, die die Punkte verbindet.

Wie mache ich das in Python?


5
Rufen Sie an, show()nachdem Sie beide scatter()und plot()zuerst angerufen haben ?

Antworten:


136

Ich denke @Evert hat die richtige Antwort:

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

Welches ist so ziemlich das gleiche wie

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

oder welchen Linestyle du auch bevorzugst.


3
'linestyle' war für mich der gute Schlüssel zur Suche nach Schlüsselwörtern, um durch die (gynormösen) matplotlib-Dokumente zu gelangen.
Reb.Cabin

2
@aaronsnoswell Größe und Farbe sind nur für die Punkte sinnvoll, über die Sie scatternach meinem ersten Beispiel noch zeichnen können . Die Frage sagt nichts über eine unterschiedliche Linienstärke oder Farbe aus, daher denke ich, dass Ihre Kritik wirklich etwas unfair ist.
Hannes Ovrén

28

Für rote Linien und Punkte

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

oder für x Markierungen und blaue Linien

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

Es sieht so aus, als ob es dir, Evert und Kigurai gut geht. Sie können sowohl dispers () als auch plot () aufrufen, bevor Sie show () aufrufen. Oder rufen Sie einfach plot () mit den Linien- und Punktattributen auf, wie Steve Barnes es beschrieben hat. Danke
brno792

14

Zusätzlich zu den Angaben in den anderen Antworten kann mit dem Schlüsselwort "zorder" die Reihenfolge festgelegt werden, in der verschiedene Objekte vertikal dargestellt werden. Z.B:

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

Zeichnet die Streusymbole über der Linie, während

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

Zeichnet die Linie über den Streusymbolen.

Siehe z. B. die Zorder-Demo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.