如何在pylab中控制2D图像的透明度?我想提供两组值(X,Y,Z,T)
,其中X,Y
是位置数组,Z
是颜色值,T
是函数的透明度,如{ {1}}但似乎该函数仅将alpha作为标量。作为一个具体的例子,考虑下面的代码试图显示两个高斯。值越接近零,我就越喜欢这个情节。
imshow
注意:我不是在寻找Z1 + Z2的图(这将是微不足道的),而是寻找在图像中指定alpha混合的一般方法。
答案 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)
你可能会找到一种更优雅的方式,但希望你能得到这个想法。