web-dev-qa-db-fra.com

Tracer une liste de coordonnées (x, y) dans python matplotlib

J'ai une liste de paires (a, b) que je voudrais tracer avec matplotlib dans python comme coordonnées x-y réelles. Actuellement, il crée deux tracés, où l'index de la liste donne la coordonnée x, et les valeurs y du premier tracé sont les as des paires et les valeurs y du deuxième tracé sont les bs de les paires.

Pour clarifier, mes données ressemblent à ceci: li = [(a,b), (c,d), ... , (t, u)] Je veux créer une ligne qui appelle simplement plt.plot() incorrect. Si je n'avais pas besoin d'un one-liner, je pourrais trivialement faire:

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
  • Comment puis-je obtenir que matplotlib trace ces paires sous forme de coordonnées x-y?

Merci pour votre aide!

86
CodeKingPlusPlus

Selon cet exemple :

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()

produira:

enter image description here

Pour décompresser vos données de paires dans des listes, utilisez Zip:

x, y = Zip(*li)

Donc, le one-liner:

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

Si vous avez un tableau numpy, vous pouvez faire ceci:

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

Si vous voulez tracer une seule ligne reliant tous les points de la liste

plt . plot ( li [ : ] )

plt . show ( )

Cela tracera une ligne reliant toutes les paires de la liste sous forme de points sur un plan cartésien du début à la fin de la liste. J'espère que c'est ce que tu voulais.

1
Shubham Rana