在matplotlib中覆盖imshow图。

7 浏览
0 Comments

在matplotlib中覆盖imshow图。

我想要在同一个imshow图上比较两组不同的数据,以便更容易看到差异。

我的第一反应是让色彩映射中的颜色变得透明(尤其是较低的值),但我还没有成功实现:

from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np
# 创建虚拟数据
zvals =  np.random.rand(100,100)*10-5
zvals2 = np.random.rand(100,100)*10-5
# 生成透明的颜色
color1 = colorConverter.to_rgba('white',alpha=0.0)
color2 = colorConverter.to_rgba('black',alpha=0.8)
# 创建色彩映射
cmap1 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap',['green','blue'],256)
cmap2 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap2',[color1,color2],256)
img2 = plt.imshow(zvals,interpolation='nearest',cmap=cmap1,origin='lower')
img3 = plt.imshow(zvals2,interpolation='nearest',cmap=cmap2,origin='lower')
plt.show()

没有报错,但第二个图的白色和黑色没有显示任何透明度。我还尝试了使用colorConverter方法在普通的plt.plot情况下设置颜色,但颜色也没有变得透明,尽管显示了正确的颜色。

如果对如何叠加/比较imshow图有任何额外的建议,将不胜感激。

0