pylab中的变量alpha混合

时间:2010-03-22 20:52:46

标签: python alphablending matplotlib

如何在pylab中控制2D图像的透明度?我想提供两组值(X,Y,Z,T),其中X,Y是位置数组,Z是颜色值,T是函数的透明度,如{ {1}}但似乎该函数仅将alpha作为标量。作为一个具体的例子,考虑下面的代码试图显示两个高斯。值越接近零,我就越喜欢这个情节。

imshow

注意:我不是在寻找Z1 + Z2的图(这将是微不足道的),而是寻找在图像中指定alpha混合的一般方法。

1 个答案:

答案 0 :(得分:8)

您可以做的一件事是修改您放入imshow的内容。第一个变量可以是您使用的灰度值,也可以是RGB或RGBA值。如果是RGB / RGBA值,则忽略cmap。例如,

imshow(Z1, cmap=cm.hsv, alpha=.6, extent=extent)

将生成与

相同的图像
imshow(cm.hsv(Z1), alpha=.6, extent=extent)

因为cm.hsv()只返回RGBA值。如果你看一下它返回的值,它们都有1.0作为A值(透明度)。因此,实现可变透明度的一种方法是这样的:

def mycmap(x):
    tmp = cm.hsv(x)
    for i in xrange(tmp.shape[0]):
        for j in xrange(tmp.shape[0]):
            tmp[i,j][3] = somefunction of x[i,j] that generates the transparency
    return tmp

imshow(mycmap(Z1), extent=extent)
imshow(mycmap(Z2), extent=extent)

你可能会找到一种更优雅的方式,但希望你能得到这个想法。