如何使用 matplotlib scatter() 调整每个点的 alpha?

lea*_*ine 3 python matplotlib

例如,我想提供一个 alpha 值数组,该数组的长度与我想用散点图绘制的点数相同。

我看到通过手动计算 rbg 颜色值并使用颜色图来解决问题,有没有更简单的方法?

如果这是唯一的方法,我该如何抽象该函数,以便我可以只提供元素、颜色和透明度值的数量来获取我需要的颜色图?我不知道我可能使用什么颜色,透明度权重也会改变,所以我想要更通用的东西。

edu*_*idl 9

您可以使用matplotlib.colors.to_rgb(a).

import matplotlib.pyplot as plt
from matplotlib.colors import to_rgb, to_rgba
import numpy as np

def scatter(x, y, color, alpha_arr, **kwarg):
    r, g, b = to_rgb(color)
    # r, g, b, _ = to_rgba(color)
    color = [(r, g, b, alpha) for alpha in alpha_arr]
    plt.scatter(x, y, c=color, **kwarg)

N = 500
x = np.random.rand(N)
y = np.random.rand(N)
alpha_arr = x * y
scatter(x, y, 'red', alpha_arr, s=10) # ok
scatter(x, y, '#efefef', alpha_arr, s=10) # ok
Run Code Online (Sandbox Code Playgroud)

参考