根据列表索引绘制列表值

时间:2018-07-03 01:32:45

标签: python matplotlib

我有一个列表列表,其中每个列表包含一些数字,比如说

t = [[5,6,1],[4,6,33],[6,33,5,10],[1,2],[1,22,44,3]]

使用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)

它正确绘制了前两个索引,然后出现错误:

  

x和y的大小必须相同

输出图像

什么是正确的方法?

1 个答案:

答案 0 :(得分:5)

我认为您需要

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列表中包含大小不同的列表

enter image description here


如果要为y的每个索引设置相同的x ,请执行

for i,v in enumerate(y):
    plt.scatter([i+1]*(len(v)),v)

请注意,我完成[i+1]是因为您编写它的方式似乎要从1开始的索引

enter image description here