J'ai une liste de paires avec (a, b)
lesquelles je voudrais tracer matplotlib
en python en tant que coordonnées xy réelles. Actuellement, il fait deux tracés, où l'index de la liste donne la coordonnée x, et les valeurs y du premier tracé sont les a
s dans les paires et les valeurs y du second tracé sont les b
s dans les paires.
Pour clarifier, mes données ressemblent à ceci: li = [(a,b), (c,d), ... , (t, u)]
je veux faire un one-liner qui appelle juste plt.plot()
incorrect. Si je n'avais pas besoin d'un one-liner, je pourrais facilement faire:
xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
Comment puis-je demander à matplotlib de tracer ces paires en coordonnées xy?
python
matplotlib
plot
coordinates
CodeKingPlusPlus
la source
la source
plt.scatter( * xy.T )
fonctionne: court et obscur pourx, y = xy.T; plt.scatter( x, y )
x, y = zip(*li)
est un code python vraiment élégant! J'ai fait les deux lignes de code les plus simples avec une compression de liste sur chaque ligne (comme la question d'origine)plt.scatter
exemple aléatoire a à voir avec la question.Si vous avez un tableau numpy, vous pouvez le faire:
la source
np.array
dedata=np.array([[x1,y1],[x2,y2],etc.])
et utiliserplt.plot(data)
. Je vais toujours devoir donner deux tableaux au lieu de tableaux de tableaux?plt.plot(*data.T)
ce qui fait la même chose que ci-dessus, mais ignore l'étape intermédiaire.Si vous souhaitez tracer une seule ligne reliant tous les points de la liste
Cela tracera une ligne reliant toutes les paires de la liste sous forme de points sur un plan cartésien du début de la liste à la fin. J'espère que c'est ce que vous vouliez.
la source
scatter()
.