如何在不同的子图中应用不同的颜色图?

时间:2015-03-29 15:46:22

标签: matlab matlab-figure colorbar colormap

我做了或多或少的以下事情:

figure
for ii=1:4
    subplot(2,2,ii)
    imshow(image(ii))
    hcb = colorbar;

    switch ii
        case 1
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 2
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 3
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 4
            colormap(aDifferentMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
    end
end

我面临的是,为第四个情节调用colormap(aDifferentMap)ii=4),为前三个情节搞砸了:在我的最后一个数字中,所有颜色条都有{{1} } colormap,还有aDifferentMap属性的一些问题。

如果我在案例4中注释YTick,那一切都运作良好(除了第四个子图,它将有一个错误的色图而且没有任何Ytickes)。

我该如何处理?如何在不影响子图1:3的情况下设置colormap(aDifferentMap)的属性?

3 个答案:

答案 0 :(得分:5)

对于 Matlab 2014a和之前应用answer of Phil Goddard,您需要使用例如来自FileExchange的freezeColors


Matlab 2014b 中,问题通过update of the graphics engine to version HG-2解决了。现在,色彩映射会影响图中的所有轴,除非您单独设置轴色彩映射。(来自doc

figure
ax1 = subplot(2,1,1);
surf(peaks)
colormap(ax1,spring)

ax2 = subplot(2,1,2);
surf(peaks)
colormap(ax2,winter)

enter image description here

答案 1 :(得分:1)

Colormap是图形的属性,而不是轴的属性,因此为子图更改它会更改所有子图。

请查看Using multiple colormaps in a single figure以获取解决方案示例。

答案 2 :(得分:0)

如果您只想在图中显示带有不同色彩映射的图片,则可以使用ind2rgb

load flujet;
subplot(221); image(ind2rgb(X, gray(63)));
subplot(222); image(ind2rgb(X, jet(63)));
subplot(223); image(ind2rgb(X, hot(63)));
subplot(224); image(ind2rgb(X, copper(63)));

但是,早期版本的MATLAB中仍然无法显示不同的颜色条。