web-dev-qa-db-de.com

Zeichnen einer Liste von (x, y) Koordinaten in python matplotlib

Ich habe eine Liste von Paaren (a, b), Die ich mit matplotlib in python als tatsächliche xy-Koordinaten zeichnen möchte. Derzeit werden zwei Diagramme erstellt, wobei Der Index der Liste gibt die x-Koordinate an, und die y-Werte des ersten Diagramms sind die as in den Paaren und die y-Werte des zweiten Diagramms sind die bs in den Paaren.

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() als falsch aufruft. Wenn ich keinen Einzeiler benötigte, könnte ich Folgendes 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 x-y-Koordinaten zu zeichnen?

Danke für all die Hilfe!

86

Gemäß dieses Beispiel :

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.Rand(N)
y = np.random.Rand(N)

plt.scatter(x, y)
plt.show()

wird herstellen:

enter image description here

Um Ihre Daten aus Paaren in Listen zu entpacken, verwenden Sie Zip:

x, y = Zip(*li)

Also, der Einzeiler:

plt.scatter(*Zip(*li))
142
sashkello

Wenn Sie ein Numpy-Array haben, können Sie dies tun:

import numpy as np
from matplotlib import pyplot as plt

data = np.array([
    [1, 2],
    [2, 3],
    [3, 6],
])
x, y = data.T
plt.scatter(x,y)
plt.show()
27
Zweedeend

Wenn Sie eine einzelne Linie zeichnen möchten, die alle Punkte in der Liste verbindet

plt . plot ( li [ : ] )

plt . show ( )

Dies zeichnet eine Linie, die alle Paare in der Liste als Punkte auf einer kartesischen Ebene vom Anfang der Liste bis zum Ende verbindet. Ich hoffe das ist was du wolltest.

1
Shubham Rana