siv*_*han 6 python matplotlib nested-lists
我试图描绘(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()
Run Code Online (Sandbox Code Playgroud)
假定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()
Run Code Online (Sandbox Code Playgroud)
假设:x和中的任何元素y都具有相同的长度。这个想法是逐个元素地读取,以便构造列表(x,y[0]'s),(x,y[1]'s)然后(x,y[n]'s。
编辑:如果y包含更多列表,请修改代码。
使用 for 循环生成图并.show()在 for 循环之后使用该方法。
import matplotlib.pyplot as plt
for impacts in impactData:
timefilteredForce = plt.plot(impacts)
timefilteredForce = plt.xlabel('points')
timefilteredForce = plt.ylabel('Force')
plt.show()
Run Code Online (Sandbox Code Playgroud)
ImpactData 是一个列表列表。