3

簡単に言えば、初期色「#1010CA」とアルファ係数 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)
4

2 に答える 2

1

背景色がないと「最終色」は得られません。

しかし、アルファ透明度をレンダリングするために、加重和が機能すると思います。

final = (1 - alpha) * background + alpha * foreground

したがって、あなたの色が白であなたalpha = 0.5の場合、あなたは次のことができます:

final = rgb(0.5, 0.5, 0.5) + foreground / 2

MatplotlibはRGBタプルを受け入れるため、不透明度フラット化関数を非常に簡単に作成できます。しかし、なぜあなたがこれをする必要があるのか​​は私が答えることができるものではありません。

于 2012-05-18T05:11:40.263 に答える
0

問題は、最終的なピクセルの色に影響を与えるのは2つの色(前景と背景)のブレンドであるということです。背景として白色から始めている場合は、前景色をHSI色空間(http://en.wikipedia.org/wiki/HSL_and_HSV)に変換し、アルファチャネルとしてIを使用すると近づけることができます。さらに厳密に一致させるには、L * a * b色空間(http://en.wikipedia.org/wiki/CIELAB)を使用し、透明度の比率に一致するようにLを変更します。

于 2012-05-18T05:24:48.723 に答える