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 a
s des paires et les valeurs y du deuxième tracé sont les b
s 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)
Merci pour votre aide!
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:
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))
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()
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.