web-dev-qa-db-ja.com

Pythonの同じグラフにリストのリストをプロットする

私は_(x,y)_を_y = [[1,2,3],[4,5,6],[7,8,9]]_としてプロットしようとしています。

言う、len(x) = len(y[1]) = len(y[2]) .. yの長さは、ユーザー入力によって決定されます。同じグラフにyの複数のプロット、つまり_(x, y[1],y[2],y[3],...)_をプロットしたいです。ループを使用しようとすると、_dimension error_と表示されます。

私も試しました:plt.plot(x,y[i] for i in range(1,len(y)))

どのようにプロットしますか?助けてください。

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

Xのサンプル値を想定すると、目的の出力が得られるコードを以下に示します。

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[0])):
    plt.plot(x,[pt[i] for pt in y],label = 'id %s'%i)
plt.legend()
plt.show()

仮定:xyの要素は同じ長さです。アイデアは、リスト(x,y[0]'s)(x,y[1]'s)および(x,y[n]'s

編集:yにさらにリストが含まれる場合、コードを調整します。

以下は、この場合に得られるプロットです。 Sample plot

8
Sreejith Menon

Forループを使用してプロットを生成し、forループの後に.show()メソッドを使用します。

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

 plt.show()

impactDataはリストのリストです。

Here's the plot this code generated.

2
Nathan Pyle