基于数组值的不同颜色和 alpha 值

different colours and alpha values based on array values

我有类似于以下的数组:

a_1 = [2]
v_1 = [6,7,8,9]
plt.scatter(np.tile(a_1[0],4), v_1, color='r', alpha=0.5)

在这里,我想为 v_1 数组中具有最高值的每个数据点设置一个单独的 alpha 值,使 alpha 值更接近 1 和最低的获得最小的 alpha 值。

我还有几个与上面类似的数组,具有不同长度的 v_* 数组,例如:

a_2 = [5]
v_2 = [3,0.2,1,5,7,9] 
plt.scatter(np.tile(a_2[0],6), v_2, color='b', alpha=0.4)

注意: np.tile(a_*[0],length_of_v 值根据 v_x 值的长度变化 w.r.t .

这里,我想为a_*的不同值分配不同的颜色,并且对于每种颜色,需要根据分配不同的alpha值v_* 数组值。 (最高值使 alpha 值更接近 1,最小值使 alpha 值更接近 0 并且保持更好的顺序)

有人可以指定如何在具有不同 a_* 和 v_* 数组的循环中实现吗?

让我们尝试计算 alpha 并传递给 scatter:

def get_color(v, 
              offset=0.3,         # minimal alpha, we don't want transparent points
              base_color=(1,0,0)  # (1,0,0) for red, (0,1,0) for green, etc
             ):
    v = np.array(v)
    scaled = (v-v.min())/np.ptp(v)
    scaled = offset + (1-offset)*scaled
    return [base_color+(s,) for s in scaled]

plt.scatter(np.tile(a_1[0],4), v_1, c=get_color(v_1))

输出: