2017-04-06 12 views
0

私は以下のコードを使用してKNNための散布図をプロットしようとしていますを使用して、[x、y]が、その寄付次のエラー:プロットmatplotlibの

TypeError: zip argument #1 must support iteration

l = [[[0.676, 1.064], [0.828, 1.038], [0.913, 0.82], [0.857, 0.948], [0.723, 1.064], [0.792, 0.888], [0.881, 1.036], [0.872, 0.893], [0.748, 0.965], [0.837, 0.883], [0.841, 0.925], [0.805, 0.875], [0.87, 1.068], [0.831, 0.859]], [[0.764, 0.899], [0.774, 0.875], [0.573, 0.896], [0.728, 0.916], [0.795, 0.724], [0.736, 0.845], [0.753, 0.837], [0.842, 0.778], [0.54, 0.841]], [[0.245, 0.243], [0.322, 0.219], [0.334, 0.159], [0.211, 0.136], [0.161, 0.305], [0.174, 0.079], [0.057, 0.073], [0.321, 0.139], [0.225, 0.208], [0.253, 0.18], [0.37, 0.068], [0.435, 0.222], [0.258, 0.091], [0.421, -0.095], [0.354, 0.056], [0.253, 0.137], [0.214, 0.194], [0.289, 0.012], [0.229, 0.142], [0.469, 0.319], [0.248, 0.332], [0.372, 0.381], [0.328, 0.243], [0.318, 0.257], [0.389, 0.1], [0.146, 0.152], [0.351, 0.165], [0.453, 0.124], [0.375, 0.078], [0.156, 0.027], [0.156, 0.19], [0.285, -0.107], [0.298, 0.069], [0.269, 0.124], [0.239, 0.082], [0.388, 0.132], [0.324, 0.015], [0.32, 0.013], [0.22, 0.201]], [[0.366, 0.772], [0.225, 0.757], [0.246, 0.498], [0.266, 0.828], [-0.028, 0.868], [0.162, 0.536], [0.224, 0.552], [0.206, 0.876], [0.125, 0.679], [0.105, 0.593], [0.219, 0.639], [0.106, 0.675], [0.216, 0.666], [0.227, 0.651], [0.297, 0.447], [0.18, 0.695], [0.051, 0.577], [0.227, 0.682], [0.265, 0.699], [0.121, 0.643], [0.062, 0.652], [0.278, 0.696], [0.173, 0.698], [0.27, 0.745], [0.207, 0.658], [0.324, 0.635], [0.076, 0.756], [0.142, 0.541], [0.073, 0.601], [0.104, 0.682], [0.086, 0.747], [0.091, 0.687], [0.091, 0.765], [0.187, 0.564], [0.233, 0.958], [0.217, 0.52], [0.274, 0.804], [0.357, 0.828]]] 


plt.scatter(*zip(*l), c='r', s=100) 
+0

完全な例が役に立ちます – Felix

+0

あなたのデータに 'scatter'が何をすると思いますか? 'len(l)out [12]:4' ' [len(a)for a l] Out [13]:[14,9,39,38] ' – f5r5e5d

答えて

0

あなたのデータはのlistslistでありますlistsであり、散布図を取得しようとすると、メインlistlistlistsにフラット化する必要があります。寸法を2Dに縮小する。次はあなたのデータのうち、散布図を取得する唯一の方法はありませんが、それはまだまともな出発点のまま:

import matplotlib.pyplot as plt 
from functools import reduce 

plt.scatter(*zip(*reduce(lambda x,y: x+y, l)), c='r', s=100) 
plt.show() 

lの寸法を小さくするために無限の他の方法があります。これはちょうど私にきちんとすることが起こります。

こちらがお役に立てば幸いです。