お世話になっております。
###前提・実現したいこと
2次元散布図において、x軸の範囲によってプロットの色を変えて同一グラフにプロットしたい。
###発生している問題・エラーメッセージ
下記のエラーコードが出てしまい、プログラムが実行できない。
plt.scatter(X[idx] , Y[idx] , **kwargs) TypeError: 'float' object has no attribute '__getitem__'
###該当のソースコード
Python
1 x2 = (round(((pMax1[0] + width1/2)-385)*0.327,2)) 2 y2 = (round(((pMax1[1] + height1/2)-290)*0.327,2)) 3 x3 = (round(((pMax2[0] + width1/2)-385)*0.327,2)) 4 y3 = (round(((pMax2[1] + height1/2)-290)*0.327,2)) 5 l = np.linalg.norm(b-a) 6 l = (round(l,2)) 7 X = (round((50/(l-50))*((x2 + x3)/2),2)) 8 Y = (round((50/(l-50))*((y2 + y3)/2),2)) 9 X1 = [17.80,17.80,18.20,18.00] 10 X2 = [-23.00,-23.30,-23.30,-23.30] 11 X3 = [0.00,0.00,0.00,0.00,0.00,0.00] 12 Y1 = [13.50,10.20,7.10,4.00] 13 Y2 = [14.50,11.20,8.10,5.00] 14 Y3 = [0.00,-7.50,-15.25,-21.10,-27.00,-32.75] 15 16 plt.scatter(X1, Y1, s=800,facecolors="none", marker="o", linewidths="0.1",edgecolors="r") 17 plt.scatter(X2, Y2, s=800,facecolors="none", marker="o", linewidths="0.1",edgecolors="b") 18 plt.scatter(X3, Y3, s=800,facecolors="none", marker="o", linewidths="0.1",edgecolors="g") 19 20 def PENEFAX1(X, Y, rangeX, **kwargs): 21 idx = np.where((X >= rangeX[0]) & (X < rangeX[1])) 22 plt.scatter(X[idx] , Y[idx] , **kwargs) 23 PENEFAX1(X, Y, rangeX=(-30, -10), c='r',marker='o') 24 PENEFAX1(X, Y, rangeX=(-10, 10), c='b', marker='o') 25 PENEFAX1(X, Y, rangeX=(10, 30), c='g', marker='o')
色々なHPや質問サイトを参考に関数を組むことが得策だということで組んでみましたが上手くいきませんでした。
###試したこと
x2,y2,x3,y3,l,X,YはOpenCVのテンプレートマッチングで動画上の座標位置を計算していて、動画の再生と併せて座標位置の計算結果(X,Y)をグラフ上に散布図としてプロットされていました。
X1,X2.X3,Y1,Y2,Y3(こちらも色分けするために無理やり分けています)とX,Yを1つのグラフにプロットしたいです。
###補足情報(言語/FW/ツール等のバージョンなど)
windows10
python2.7
matplotlib
spyder
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/30 04:43