web-dev-qa-db-fra.com

Tracer une liste de listes dans un même graphique en Python

J'essaie de tracer (x,y) où en tant que y = [[1,2,3],[4,5,6],[7,8,9]]

Dites, len(x) = len(y[1]) = len(y[2]).. La longueur de y est déterminée par l'entrée User. Je veux tracer plusieurs tracés de y dans le même graphique, c.-à-d. (x, y[1],y[2],y[3],...). Quand j'ai essayé d'utiliser la boucle, il est écrit dimension error.

J'ai aussi essayé: plt.plot(x,y[i] for i in range(1,len(y))) 

Comment puis-je tracer? S'il vous plaît aider.

for i in range(1,len(y)):
plt.plot(x,y[i],label = 'id %s'%i)
plt.legend()
plt.show()
5
sivasudhan

En supposant quelques exemples de valeurs pour x, vous trouverez ci-dessous le code qui pourrait vous donner le résultat souhaité.

import matplotlib.pyplot as plt
x = [1,2,3]
y = [[1,2,3],[4,5,6],[7,8,9]]
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("A test graph")
for i in range(len(y)):
    plt.plot(x,[pt[i] for pt in y],label = 'id %s'%i)
plt.legend()
plt.show()

Hypothèses: x et tous les éléments de y ont la même longueur . L'idée est de lire élément par élément afin de construire la liste (x,y[0]'s), (x,y[1]'s) et (x,y[n]'s

Voici l’intrigue que j’obtiens pour ce cas:  Sample plot

4
Sreejith Menon

Utilisez une boucle for pour générer les tracés et utilisez la méthode .show() après la boucle for.

 import matplotlib.pyplot as pyplt
 for impacts in impactData:
     timefilteredForce = pyplt.plt(impacts)
     timefilteredForce = pyplt.xlabel('points')
     timefilteredForce = pyplt.ylabel('Force')

 pyplt.show()

impactData est une liste de listes. 

 Here's the plot this code generated.

1
Nathan Pyle