the*_*emy 11 matlab color-mapping matlab-figure
我对Matlab很新,并且有一些问题.我在同一个图中有两个表面和一个平面.我想为b使用不同的colormap和colorbar,为c使用另一个colormap和colorbar.s是固定颜色,所以这不是问题.
让我试着解释一下我想要实现的目标:
cmap1 = colormap(topobathy) - > cmap1是64x3双倍的预期
cmap2 =颜色表(redwhitegreen)
使用cmap1创建cdata1(这是我无法弄清楚的第一部分,如何使用cmap1扩展z数据,默认情况下CData包含z值)
B =冲浪(X,Y,Z,cdata1)
使用z值的b的colorbar
c = pcolor(x,y,(z-z0)) - 我想在这个中使用cmap2.
使用(z-z0)值的c的colorbar
这是我到目前为止所遇到的问题
b=surf(x,y,z);
colormap(topobathy);
cbar1=colorbar;
set(get(cbar1,'ylabel'),'String', 'Elevation (m)', 'Rotation', 90)
hold on;
s=surf(x,y,z1,'FaceColor',[0.278 0.788 0.788])
hold on;
change=z-z0;
c=pcolor(x,y,change)
set(c,'ZData',100 + 0*change); %plotting it above the other surfaces
colormap(redwhitegreen)`
Run Code Online (Sandbox Code Playgroud)
此时,colormap设置为redwhitegreen为b,colorbar为b我无法获得第二个带有自己攀爬的colorbar等.
我在此链接中使用了freezeColors和cbfreeze:http: //blogs.mathworks.com/pick/2009/07/24/using-multiple-colormaps-in-a-single-figure/
但有一件事是在弄乱另一件事(可能都是我的错).我想学习如何在不使用外部m文件的情况下完全控制我的对象.
任何帮助表示赞赏.
Joh*_*lby 16
基本思想是连接颜色贴图,然后移动/缩放CData不同绘图控制柄的颜色数据()以与颜色贴图的所需部分对齐.所以,不知道你的自定义函数或特定的数据,你可以不喜欢colormap(topobathy(64); redwhitegreen(64)),然后缩放CData的b进入范围[1,64]和CData的c进入范围[65128].
MathWorks网站上有一个很好的指南,解释了所有这些(甚至使用surf()和pcolor()你的例子一样):
http://www.mathworks.com/support/tech-notes/1200/1215.html#Example_1
对于colorbar,你可以用类似的方式伪造刻度线和标签.以下是为上述示例制作颜色条的粗略注意事项:
h = colorbar;
ticks = [1 16:16:64 64:16:128];
ticks(5:6) = [62 66];
set(h, 'YTick', ticks);
labels = num2str(repmat(linspace(min(Z(:)), max(Z(:)), 5), 1, 2)', 2);
set(h, 'YTickLabel', labels)
Run Code Online (Sandbox Code Playgroud)
