如何为散点分配颜色

How to assign color to scatter point

我正在尝试根据与 x 或 y 值无关的值为 matplotlib 散点图中的点分配颜色。例如,每个点都可以是 3 个值之一,因此我需要三种不同的颜色来表示 3 个可能的值。因此,有 3 个数组:x_arr、y_arr 和 val_arr,其中 val_arr 的每个元素都可以是 1、2 或 3。看起来像我的大多数示例看到的颜色基于数组中的位置,而不是基于独立值。

为了在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 映射到一种颜色,但上面的方法不起作用(我得到一个类型错误,因为 pt_color 是不可散列的类型)。

不胜感激。

import matplotlib.pyplot as plt
from numpy.random import random, randint

X = random(10)
Y = random(10)
val_arr = randint(low=0, high=3, size=10)
plt.scatter(X, Y, c=val_arr,
            s=40)
plt.colorbar()
plt.show()

将 val_arr 值与默认颜色图隔开,颜色条解释了 val_arr 颜色的含义。