2015-10-05 22 views
5

私はピッカーイベントを持つ散布図を作成しました。マウスでクリックしたデータポイントの色を変更したい。私が持っているコードは配列全体の色を変更します。特定のポイントを変更するにはどうすればよいですか?ありがとうPython、Matplotlib、散布図、クリックした点の色を変更します

import sys 
import numpy as np 
import matplotlib.pyplot as plt  
testData = np.array([[0,0], [0.1, 0], [0, 0.3], [-0.4, 0], [0, -0.5]]) 
    fig, ax = plt.subplots() 
    sctPlot, = ax.plot(testData[:,0], testData[:,1], "o", picker = 5) 
    plt.grid(True) 
    plt.axis([-0.5, 0.5, -0.5, 0.5]) 

def on_pick(event): 
    artist = event.artist 
    artist.set_color(np.random.random(3)) 
    print "click!" 
    fig.canvas.draw() 

fig.canvas.mpl_connect('pick_event', on_pick) 

答えて

5
import sys 
import numpy as np 
import matplotlib.pyplot as plt 

testData = np.array([[0,0], [0.1, 0], [0, 0.3], [-0.4, 0], [0, -0.5]]) 
fig, ax = plt.subplots() 
coll = ax.scatter(testData[:,0], testData[:,1], color=["blue"]*len(testData), picker = 5, s=[50]*len(testData)) 
plt.grid(True) 
plt.axis([-0.5, 0.5, -0.5, 0.5]) 

def on_pick(event): 
    print testData[event.ind], "clicked" 
    coll._facecolors[event.ind,:] = (1, 0, 0, 1) 
    coll._edgecolors[event.ind,:] = (1, 0, 0, 1) 
    fig.canvas.draw() 

fig.canvas.mpl_connect('pick_event', on_pick) 
plt.show() 
関連する問題