Если вы можете использовать любой цвет, какой захотите, вы можете использовать тот факт, что цвета (почти) непрерывны. раскрасьте точки в соответствии с их координатами x, y, и в качестве побочного эффекта вы получите, что точки закрытия будут иметь чем-то похожим цвет .
Вы можете использовать что-то вроде
point.color(R,G,B) = ( point.normalized_x, 0.5, 1-point.normalized.y )
, где normalized_x - это (x-min_x / (max_x-min_x)), так что это даст 0 для точки с минимальным значением x и 1 для точки с максимальным значением x.
Если вам действительно нужно использовать только небольшое количество цветов и у точки закрытия есть точный того же цвета , то вам придется выполнить некоторую кластеризацию в ваших данных ( K-означает , являющийся простым и широко используемым алгоритмом). После кластеризации вы просто назначаете каждой точке цвет в соответствии с идентификатором ее кластера. У Python есть несколько хороших реализаций, включая кластеризацию scipy .