В этом случае вам нужно, чтобы ваш художник был каждой точкой, а не коллекцией, потому что вы хотите, чтобы они вели себя отдельно. Таким образом, вы можете перебирать все точки и строить много линий по одной. Таким образом, изменение цвета графика повлияет только на выбранный участок. Пример:
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import rand
# simple picking lines
def onpick1(event):
thisline = event.artist #Get the clicked line OR line collection
thisline._color = '#DC143C' #Set to new color, in this case must be hsv
thisline._axes.figure.canvas.draw() #update the plot
thisline._axes.figure.canvas.flush_events()
fig, ax1 = plt.subplots()
data = rand(10, 2) #Random points for demonstration
for data_point in data:
line, = ax1.plot(data_point[0], data_point[1], 'o', picker=2, c='yellow') #2 points tolerance
fig.canvas.mpl_connect('pick_event', onpick1)
plt.show()