我做了或多或少的以下事情:
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)
的属性?
答案 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)
答案 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中仍然无法显示不同的颜色条。