简单地说,给定初始颜色"#1010CA"和 alpha 因子 0.5,我如何获得以color="#1010CA", alpha=0.5
表示的图上显示的最终颜色?
或者更直接地说,我应该填写什么
plot(x, y, color=__)
因此它等效于(至少在视觉上(到
plot(x, y, color="#1010CA", alpha=0.5)
?我想这不应该是一个 python 问题,而是如何通过某种因素操纵 rgb 颜色来抑制它,但请原谅我对调色板的无知......
编辑
这是我在接受@Blender的答案后选择的当前解决方案
import matplotlib
import numpy as np
def alpha_blending(hex_color, alpha) :
""" alpha blending as if on the white background.
"""
foreground_tuple = matplotlib.colors.hex2color(hex_color)
foreground_arr = np.array(foreground_tuple)
final = tuple( (1. - alpha) + foreground_arr*alpha )
return(final)
如果没有背景颜色,您也无法获得"最终颜色"。
但是对于渲染 alpha 透明度,我猜加权和会起作用:
final = (1 - alpha) * background + alpha * foreground
因此,如果您的颜色是白色并且alpha = 0.5
,您可以执行以下操作:
final = rgb(0.5, 0.5, 0.5) + foreground / 2
Matplotlib 接受 RGB 元组,因此您可以非常轻松地制作不透明度展平化函数。然而,为什么你需要这样做,我无法回答。
问题是它是两种颜色(前景和背景(的混合,会影响最终的像素颜色。如果您从白色作为背景,将前景色转换为 HSI 色彩空间 (http://en.wikipedia.org/wiki/HSL_and_HSV( 并使用 I 作为 alpha 通道可以使您接近。为了获得更紧密的匹配,您可以使用 L*a*b 色彩空间 (http://en.wikipedia.org/wiki/CIELAB( 并更改 L 以匹配您的透明度。