如何在Matlab中混合不同色图的颜色

时间:2015-01-09 08:02:22

标签: matlab contour colormap

我希望重叠区域显示色彩图(热色)和色彩色图(酷色)的混合色。

例如,

contourf(peaks)
colormap(hot)
freezeColors
hold on
contourf(peaks')
colormap(cool)

即使我调整alpha值来调整等高线图的透明度。颜色仍然看起来不像是两种不同色彩图的混合。例如,一个轮廓1的环填充蓝色,另一个轮廓2的环填充红色。在轮廓1和轮廓2的环的重叠区域中,我想在轮廓1和轮廓2上填充紫色(红色+蓝色)颜色,并且非重叠区域仍保持原始颜色(蓝色或红色)。

有没有人有好主意?

提前致谢!!

2 个答案:

答案 0 :(得分:0)

编辑:我刚看完你的编辑,我不知道你想要的答案......我会把它放在这里以防万一。

你正在使用的hold on命令只是覆盖了之前的点(除了colormap会影响全局点,所以它无论如何都不会工作......)。您需要做的是生成一个新的色彩图,它是两个旧色图的总和,有点像这样:

 Map1=colormap(hot);
 Map2=colormap(cool);
 CustomMap=Map1/2+Map2/2;
 imshow(ImageWhatever)
 colormap(CustomMap)

希望看到你想要的!

答案 1 :(得分:0)

我已经找到了解决方案。代码显示为打击。

IM1 =双(峰(300));
IM2 =双(峰(300)');
im1_rgb =夏季(IM1);
im2_rgb =凉(IM2);
[x,y] = meshgrid(1:size(im1,2),1:size(im1,1));

数据= im1_rgb / 2 + im2_rgb / 2;
副区(1,3,1)
tcolor(X,Y,数据)
坚持,稍等 并[c,H1] =轮廓(X,Y,IM1);
集(H1, 'LineColor', 'b')的
[C,H 2] =轮廓(X,Y,IM2);
集(H2, 'LineColor', 'K')
推迟了 副区(1,3,2)
tcolor(X,Y,im1_rgb)
坚持下来 并[c,H1] =轮廓(X,Y,IM1);
集(H1, 'LineColor', 'b')的
推迟了 副区(1,3,3)
tcolor(X,Y,im2_rgb)
坚持下来 [C,H 2] =轮廓(X,Y,IM2);
集(H2, 'LineColor', 'K')
推迟了