Ich habe eine Liste von Paaren (a, b)
, mit denen ich matplotlib
in Python als tatsächliche xy-Koordinaten zeichnen möchte . Derzeit werden zwei Diagramme erstellt, wobei der Index der Liste die x-Koordinate angibt und die y-Werte des ersten Diagramms die a
s in den Paaren und die y-Werte des zweiten Diagramms die b
s in den Paaren sind.
Zur Verdeutlichung sehen meine Daten folgendermaßen aus: li = [(a,b), (c,d), ... , (t, u)]
Ich möchte einen Einzeiler erstellen , der nur plt.plot()
falsch aufruft . Wenn ich keinen Einzeiler benötige, könnte ich das trivial tun:
xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
- Wie kann ich matplotlib dazu bringen, diese Paare als xy-Koordinaten zu zeichnen?
Danke für all die Hilfe!
python
matplotlib
plot
coordinates
CodeKingPlusPlus
quelle
quelle
plt.scatter( * xy.T )
funktioniert: kurz und dunkel fürx, y = xy.T; plt.scatter( x, y )
x, y = zip(*li)
ist wirklich eleganter Python-Code! Ich habe die direkteren zwei Codezeilen mit einer Listenkomprimierung in jeder Zeile (wie die ursprüngliche Frage) gemachtplt.scatter
Beispiel mit der Frage zu tun hat.Wenn Sie ein Numpy-Array haben, können Sie dies tun:
quelle
np.array
vondata=np.array([[x1,y1],[x2,y2],etc.])
und zu verwendenplt.plot(data)
. Ich muss immer zwei Arrays anstelle von Arrays von Arrays geben?plt.plot(*data.T)
was das gleiche wie oben tut, aber den Zwischenschritt überspringt.Wenn Sie eine einzelne Linie zeichnen möchten, die alle Punkte in der Liste verbindet
Dadurch wird eine Linie gezeichnet, die alle Paare in der Liste als Punkte auf einer kartesischen Ebene vom Anfang der Liste bis zum Ende verbindet. Ich hoffe, dass Sie das wollten.
quelle
scatter()
.