2015-10-05 6 views
5

Bu yüzden, bir seçici olay ile basit bir dağılım grafiği var. Fare ile tıklattığım veri noktasının rengini değiştirmek istiyorum. Sahip olduğum kod bütün dizinin rengini değiştirecek. Sadece belirli bir noktayı nasıl değiştirebilirim? TeşekkürPython, Matplotlib, Dağılım grafiği, Tıklatılan noktadaki rengi değiştir

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) 

cevap

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()