Python, Matplotlib, Scatter plot, Change color at clicked point

I have a simple scatter plot with a select event.
I want to change the color of the data point that I click on.
I have code that will change the color of the entire array.
How can I just change one specific point?

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) 
+6
source share
1 answer
 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() 
+6
source

Source: https://habr.com/ru/post/1232965/


All Articles