Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib的半透明覆盖将生成灰色而不是颜色_Python_Image_Matplotlib - Fatal编程技术网

Python 使用matplotlib的半透明覆盖将生成灰色而不是颜色

Python 使用matplotlib的半透明覆盖将生成灰色而不是颜色,python,image,matplotlib,Python,Image,Matplotlib,我想用两个灰度图像做一个彩色叠加,每个图像显示一个“信号峰值”。为了只在叠加中显示峰值,而不在背景中显示峰值,我创建了一个带有alpha通道的蓝色贴图,该通道从0渐变到1。使用imshow(),我希望看到透明的颜色,但我看到峰值周围有一个灰色光晕。我对这个问题研究了很长一段时间,但我就是想不出我需要做些什么来摆脱那个灰色的光环。如能帮助制作所需类型的覆盖物,将不胜感激 下面是一些产生问题的代码: import numpy as np import matplotlib.pyplot as plt

我想用两个灰度图像做一个彩色叠加,每个图像显示一个“信号峰值”。为了只在叠加中显示峰值,而不在背景中显示峰值,我创建了一个带有alpha通道的蓝色贴图,该通道从0渐变到1。使用
imshow()
,我希望看到透明的颜色,但我看到峰值周围有一个灰色光晕。我对这个问题研究了很长一段时间,但我就是想不出我需要做些什么来摆脱那个灰色的光环。如能帮助制作所需类型的覆盖物,将不胜感激

下面是一些产生问题的代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as cols

n = 41

# make Gaussian signal peaks
x = np.linspace(-1,1,n)
xx, yy = np.meshgrid(x,x)
b = 0.3
d = -0.3   # diagonal displacement
p1 = np.exp(-((xx-d)**2 + (yy-d)**2)/b**2)
p2 = np.exp(-((xx+d)**2 + (yy+d)**2)/b**2)

# make custom colormap
cdict = {'red': ((0.0, 0.0, 0.0),
                 (1.0, 0.3, 0.3)),
         'green': ((0.0, 0.0, 0.0),
                   (1.0, 0.5, 0.5)),
         'blue': ((0.0, 0.0, 0.0),
                  (1.0, 1.0, 1.0))}
myBu = cols.LinearSegmentedColormap('myBu',cdict,256)

# add ramp alpha channel
myBuT = cols.LinearSegmentedColormap('myBuT',cdict,256)
myBuT._init()
alphas = np.linspace(0, 1, 256+3)
myBuT._lut[:,-1] = alphas

# plot
plt.close('all')
plt.subplot(1,3,1)
plt.imshow(p1, cmap='copper')
plt.subplot(1,3,2)
plt.imshow(p2, cmap=myBu)
plt.subplot(1,3,3)
plt.imshow(p1, cmap='copper')
plt.imshow(p2, cmap=myBuT)
plt.show()
在代码生成的最右侧图像中,您可以看到蓝点周围的光晕

以下是我得到的:

我使用Python2.7.3、matplotlib 1.2.0,并尝试了不同的GUI(qt、wx、gtk),没有任何区别

更新:
转到python 2.7.5和matplotlib 1.3.1解决了这个问题。

您的代码对我来说很好,它不会产生任何灰色光晕。请参阅所附图片

我使用WinPython附带的python 2.7.6,在ipython笔记本中使用matplotlib 1.3.1