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?

brno792
quelle
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.

Hannes Ovrén
quelle
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-')
Steve Barnes
quelle
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

user3756936
quelle