我有一个列表列表,其中每个列表都包含一些数字,比方说
t = [[5,6,1],[4,6,33],[6,33,5,10],[1,2],[1,22,44,3]]
使用 python3 我想根据这个特定的列表索引绘制每个列表值,在上面的例子中我应该有从 1 到 3 的 x 轴,从 1 到 50 的 y 轴,并在 (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)
它正确地绘制了前两个索引然后我得到了错误:
x and y must be in the same size
输出图像
正确的做法是什么?
请您参考如下方法:
我觉得你需要
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)
这基本上是计算每个值的 range,因为你的 y 列表里面有不同大小的列表
如果你想为 y 的每个索引设置相同的 x,那么做
for i,v in enumerate(y):
plt.scatter([i+1]*(len(v)),v)
请注意,我已经完成了 [i+1],因为按照您编写它的方式,您似乎想要一个从 1 开始的索引
