2017-09-22 11 views
1

散布図のインデックスエラーがなぜ発生するのかわかりません。Python散布図索引エラー

fig,ax=plt.subplots(figsize=(12,8)) 
colors=['b','r'] 
for i in [2,4]: 
    indices=np.where(benign_or_malignant==i) 
    ax.scatter(clump_thickness[indices],single_ep_cell_size[indices], 
s=55,c=colors[i]) 

IndexError Traceback (most recent call last) in() 4 for i in [2,4]: 5 indices=np.where(benign_or_malignant==i) ----> 6 ax.scatter(clump_thickness[indices],single_ep_cell_size[indices], s=55,c=colors[i])

IndexError: list index out of range

データセットがそれほど(CT = clump_thicknessようにフォーマットされている、= single_ep_cell_size、CL =クランプ(2)は、良性または悪性のSECS(4):

id  ct secs cl<br> 
1000025 5 2 2<br> 
1002945 5 7 2<br> 
1015425 3 2 2<br> 
1016277 6 3 2<br> 
1017023 4 2 2<br> 
1017122 8 7 4<br> 
1018099 1 2 2<br> 
1018561 2 2 2<br> 
1033078 4 2 2<br> 
1035283 1 1 2<br> 
1036172 2 2 2<br> 
1041801 5 2 4<br> 

私はそれを理解するように、塊の厚さと単一epセルのサイズをプロットし、i = 2か4のどちらかに基づいてポイントを異なる色にする必要がありますか?

答えて

1

あなたはこの

fig,ax=plt.subplots(figsize=(8,6)) 
for name, group in df.groupby('cl'): 
    ax.plot(group['ct'], group['secs'], marker='o', linestyle='', label=name, ms = 10) 
ax.set(xlabel='clump thickness', ylabel='single ep cell size') 
ax.legend() 

enter image description here

+0

ありがとう試すことができます。データがcsvファイルから読み込まれ、配列に格納されている場合、コードをどのように変更すればよいですか? ids、clump_thickness、single_ep_cell_size、benign_or_malignant = _loadData()#これはヘルパー関数を呼び出す方法です。 – Aoitori

+0

データセットは私にとってパンダのデータフレームのように見えます。プロットとグループ化については、最初にpd.read_csv(yourfile)を使用してデータフレームにロードすることをお勧めします。 – Vaishali

1

リストインデックスエラーはを指しています0リスト。 iの値が4の場合、colors[i]は定義されていません。

可能修正:

colors = ['b','r'] 
b_or_m = [2, 4] 
for i in [0, 1]: 
    indices=np.where(benign_or_malignant==b_or_m[i]) 
    ax.scatter(clump_thickness[indices], single_ep_cell_size[indices], s=55, c=colors[i])