Я пытаюсь назначить цвет точкам на диаграмме рассеяния matplotlib на основе значения, которое не связано со значением x или y. Каждая точка может быть, например, одним из 3 значений, поэтому я хочу три разных цвета для 3 возможных значений. Итак, есть 3 массива: x_arr, y_arr и val_arr, где каждый элемент val_arr может быть 1, 2 или 3. Похоже, что большинство примеров, которые я видел, имеют цвет на основе позиции в массиве, а не на основе самостоятельное значение.
Чтобы получить высокий контраст между тремя типами точек для лучшей видимости там, где точек много, я сделал что-то вроде этого:
pt_color = plt.cm.Dark2(np.linspace(0, 1, 3))
Чего я не могу понять, так это того, как назначить правильный цвет для каждого элемента значения. Концептуально я хотел бы сделать что-то вроде этого,
gr.scatter(x_arr, y_arr, c=val_arr, cmap=pt_color)
где каждый элемент val_arr сопоставляется с цветом с помощью pt_color, но вышеописанное не работает (я получаю ошибку TypeError, потому что pt_color — нехешируемый тип).
Любые указатели приветствуются.