我正在尝试使用两个不同的contourf子图来制作一个使用完全不同的colormap的图形。但是,对于我目前拥有的代码(为其中一个子图创建自定义颜色图),子图使用相同的颜色图。任何想法如何解决这个问题?
h = figure;
subplot(2,1,1)
title('GEFS 20 Member Mean Vorticity');
axesm('eqdcylin','maplonlimit',[-180 179],'maplatlimit',[0 90]);
%eqdcylin
contourm(gLat, gLon, squeeze(meanhx(x,:,:))', 16,'Color',[0.05 0.05 0.05],'LineWidth',2);
hold on
contourfm(gLat, gLon, squeeze(vmeanx(x,:,:))', 30, 'LineStyle', 'none');
shading flat;
lm=worldlo('POline');
for i=1:length(lm);
lm(i).otherproperty = {'color','m','LineWidth',1.5};
end
displaym(lm);
gridm on;
tightmap;
set(h, 'Position', [1 1 2200 1100]);
colormap(b2r(-5*10^-5, 5*10^-5));
freezeColors;
cbfreeze(colorbar)
%caxis([-5*10^-5 5*10^-5])
colorbar;
subplot(2,1,2)
title('GEFS 20 Member Vorticity Variance');
axesm('eqdcylin','maplonlimit',[-180 179],'maplatlimit',[0 90]);
%eqdcylin
contourm(gLat, gLon, squeeze(meanhx(x,:,:))', 16,'Color',[0.05 0.05 0.05],'LineWidth',2);
hold on
contourfm(gLat, gLon, squeeze(vvarx(x,:,:))', 30, 'LineStyle', 'none');
shading flat;
lm=worldlo('POline');
for i=1:length(lm);
lm(i).otherproperty = {'color','m','LineWidth',1.5};
end
displaym(lm);
gridm on;
tightmap;
set(h, 'Position', [1 1 2200 1100]);
mycmap = [
0.9961 0.9961 0.9961;
0.6641 0.6641 0.9974;
0.3320 0.3320 0.9987;
0 0 1.0000;
0 0.2500 1.0000;
0 0.5000 1.0000;
0 0.7500 1.0000;
0 1.0000 1.0000;
0.2000 1.0000 0.8000;
0.4000 1.0000 0.6000;
0.6000 1.0000 0.4000;
0.8000 1.0000 0.2000;
1.0000 1.0000 0;
1.0000 0.9333 0;
1.0000 0.8667 0;
1.0000 0.8000 0;
1.0000 0.7333 0;
1.0000 0.6667 0;
1.0000 0.6000 0;
1.0000 0.5333 0;
1.0000 0.4667 0;
1.0000 0.4000 0;
1.0000 0.3333 0;
1.0000 0.2667 0;
1.0000 0.2000 0;
1.0000 0.1333 0;
1.0000 0.0667 0;
1.0000 0 0;
0.9854 0 0;
0.9708 0 0;
0.9561 0 0;
0.9415 0 0;
0.9269 0 0;
0.9123 0 0;
0.8977 0 0;
0.8830 0 0;
0.8684 0 0;
0.8538 0 0;
0.8392 0 0;
0.8246 0 0;
0.8099 0 0;
0.7953 0 0;
0.7807 0 0;
0.7661 0 0;
0.7515 0 0;
0.7368 0 0;
0.7222 0 0;
0.7092 0 0;
0.6961 0 0;
0.6830 0 0;
0.6699 0 0;
0.6569 0 0;
0.6438 0 0;
0.6307 0 0;
0.6176 0 0;
0.6046 0 0;
0.5915 0 0;
0.5784 0 0;
0.5654 0 0;
0.5523 0 0;
0.5392 0 0;
0.5261 0 0;
0.5131 0 0;
0.5000 0 0;
];
colormap(mycmap);
freezeColors;
cbfreeze(colorbar);
set(gcf, 'renderer', 'zbuffer');
答案 0 :(得分:1)
编辑:似乎文档错了!见评论!
通过使用色彩映射函数的第二个参数,如果要像这样调用它,应该能够将特定的色彩映射分配给特定的(子)图或轴:
请注意第一个参数是轴的句柄!
colormap(ax,map)
设置ax指定的轴的colormap。每个轴都在一个 图可以有一个独特的颜色图。设置轴色彩映射后, 更改图形颜色图不会影响轴。
如何获得轴的手柄?:
用绘图(x,y ..)绘图时,将其作为返回值。抓住它:
ax = plot(x,y..)
对于其他情节函数,您似乎在使用它,您应该在doku中找到有关它的一些信息。
答案 1 :(得分:1)
如果升级到MATLAB 2017a,可以使用语法colormap(axesHandle, cMap)
答案 2 :(得分:0)
如果您有图像处理工具箱,则可以使用功能subimage
显示带有各自颜色图的图像:
X1=imread('http://upload.wikimedia.org/wikipedia/commons/5/5c/Burosch_Blue-Only_Test_pattern.jpg');
X2=imread('http://upload.wikimedia.org/wikipedia/commons/e/ea/Romsey_River_Test.jpg');
subplot(1,2,1), subimage(X1)
subplot(1,2,2), subimage(X2)
结果:
修改这个问题here有一个更完整的答案。