Вы пробовали plt.scatter ()? Это позволяет вам определить цвет для каждой точки. Вот пример:
pyplot.scatter([0, 1, 2, 3, 4], [0, 2.4, 4.2, 5.6, 8.2],
c = ['cyan', 'skyblue', 'blue', 'navy', 'black'],
s = [110, 90, 70, 50, 30],
marker = 'o', edgecolors = 'none')
Вот это do c: https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.scatter.html