2013-03-28 21 views
12

私は3つのカテゴリ(0,1,2)に分類される2次元データポイント(x、y)の配列があります。matplotlibプロットで複数の色を使用する

a = array([[ 1, 2, 3, 4, 5, 6, 7, 8 ], 
      [ 9, 8, 7, 6, 5, 4, 3, 2 ]]) 

class = array([0, 2, 1, 1, 1, 2, 0, 0]) 

私はこれらの点を複数の色でプロットすることができますか?私はこのような何かをしたいと思います:

colors = list() 
for i in class: 
    if i == 0: 
     colors.append('r') 
    elif i == 1: 
     colors.append('g') 
    else: 
     colors.append('b') 

print colors 
['r', 'b', 'g', 'g', 'g', 'b', 'r', 'r'] 

pp.plot(a[0], a[1], color = colors) 

答えて

13

私は別個の点をプロットすると仮定します。

colormap = np.array(['r', 'g', 'b']) 

は、あなたがcolormap[categories]と色の配列を生成することができます:その場合は、 あなたがnumpyの配列定義した場合

In [18]: colormap[categories] 
Out[18]: 
array(['r', 'b', 'g', 'g', 'g', 'b', 'r', 'r'], 
     dtype='|S1') 

import matplotlib.pyplot as plt 
import numpy as np 

a = np.array([[ 1, 2, 3, 4, 5, 6, 7, 8 ], 
       [ 9, 8, 7, 6, 5, 4, 3, 2 ]]) 

categories = np.array([0, 2, 1, 1, 1, 2, 0, 0]) 

colormap = np.array(['r', 'g', 'b']) 

plt.scatter(a[0], a[1], s=50, c=colormap[categories]) 
plt.show() 

利回りを

enter image description here

関連する問題