我有一个列表列表,其中每个列表包含一些数字,比方说
t = [[5,6,1],[4,6,33],[6,33,5,10],[1,2],[1,22,44,3]]
Run Code Online (Sandbox Code Playgroud)
使用python3我想根据这个特定的列表索引绘制每个列表值,在上面的例子中我应该有x轴从1到3,y轴从1到50,标记在(1,5),(1) ,6),(1,1),(2,4),(2,6)......
这是我的代码
x = list(range(3))
y = [[5,6,1],[4,6,33],[6,33,5,10],[1,2],[1,22,44,3]]
for i in range(len(x)):
purchases = y[i]
for j in range(len(purchases)):
plt.scatter(x,purchases)
Run Code Online (Sandbox Code Playgroud)
它正确绘制前两个索引然后我得到错误:
x和y必须大小相同
输出图像

这样做的正确方法是什么?
我想你需要
y = [[5,6,1],[4,6,33],[6,33,5,10],[1,2],[1,22,44,3]]
for v in y:
plt.scatter(range(len(v)),v)
Run Code Online (Sandbox Code Playgroud)
这基本上是计算range每个值的值,因为你的y列表里面有不同大小的列表
如果你想为每个索引设置相同的xy,那么就做
for i,v in enumerate(y):
plt.scatter([i+1]*(len(v)),v)
Run Code Online (Sandbox Code Playgroud)
请注意,我已经完成了,[i+1]因为你写它的方式,似乎你想要一个从1开始的索引