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



例如,我想要提供一个阿尔法值数组,该数组的长度与我想要用散点绘制的点的数量相同。

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

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

您可以使用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

参考

  • https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.colors.to_rgb.html
  • https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.colors.to_rgba.html

最新更新