如何在不同的子图中应用不同的颜色图?
How to apply different colormaps in different subplots?
我或多或少做了以下事情:
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
),把前三个图搞砸了:在我的最终图中,所有颜色条都有 aDifferentMap
颜色图,YTick
属性也有一些问题。
如果我在案例 4 中注释掉 colormap(aDifferentMap)
,它一切正常(除了第四个子图,它将有一个错误的颜色图并且没有任何 Ytickes)。
我该如何处理?如何在不影响子图 1:3 的情况下设置 subplot(2,2,4)
的属性?
颜色图是图的 属性,而不是坐标轴,因此为子图更改它会更改所有子图。
查看 Using multiple colormaps in a single figure 的解决方案示例。
对于 Matlab 2014a 及之前版本 应用来自 FileExchange 的 and you need to use e.g. freezeColors
。
在 Matlab 2014b 中,问题已通过 update of the graphics engine to version HG-2. Now the colormap affects all axes in the figure, unless you set an axes colormap separately. (from doc)
解决
figure
ax1 = subplot(2,1,1);
surf(peaks)
colormap(ax1,spring)
ax2 = subplot(2,1,2);
surf(peaks)
colormap(ax2,winter)
如果您只想在图中显示具有不同颜色图的图像,您可以使用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 中仍然无法显示不同的颜色条。
我或多或少做了以下事情:
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
),把前三个图搞砸了:在我的最终图中,所有颜色条都有 aDifferentMap
颜色图,YTick
属性也有一些问题。
如果我在案例 4 中注释掉 colormap(aDifferentMap)
,它一切正常(除了第四个子图,它将有一个错误的颜色图并且没有任何 Ytickes)。
我该如何处理?如何在不影响子图 1:3 的情况下设置 subplot(2,2,4)
的属性?
颜色图是图的 属性,而不是坐标轴,因此为子图更改它会更改所有子图。
查看 Using multiple colormaps in a single figure 的解决方案示例。
对于 Matlab 2014a 及之前版本 应用来自 FileExchange 的 freezeColors
。
在 Matlab 2014b 中,问题已通过 update of the graphics engine to version HG-2. Now the colormap affects all axes in the figure, unless you set an axes colormap separately. (from doc)
解决figure
ax1 = subplot(2,1,1);
surf(peaks)
colormap(ax1,spring)
ax2 = subplot(2,1,2);
surf(peaks)
colormap(ax2,winter)
如果您只想在图中显示具有不同颜色图的图像,您可以使用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 中仍然无法显示不同的颜色条。