Matlab:如何将不同的颜色图/颜色条分配给同一图中的不同表面

标签 matlab matlab-figure color-mapping

我是 Matlab 的新手,有几个问题。 我在同一个图中有两个表面和一个平面。 我想为 b 使用不同的颜色图和颜色条,为 c 使用另一个颜色图和颜色条。 s 是固定颜色,所以这不是问题。

让我试着解释一下我想要实现的目标:

cmap1=colormap(topobathy) -->cmap1 是预期的 64x3 两倍

cmap2=colormap(红白绿)

使用 cmap1 创建 cdata1(这是我无法弄清楚的第一部分,如何使用 cmap1 缩放 z 数据,默认情况下 CData 包含 z 值)

b=surf(x,y,z,cdata1)

colorbar b 使用 z 值

c=pcolor(x,y,(z-z0)) - 我想为此使用 cmap2。

colorbar 用于 c 使用 (z-z0) 值

这是我目前的情况和遇到的问题

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)`

此时colormap为b设置为redwhitegreen,b的colorbar 我无法使用自己的 clim 等获得第二个颜色条。

我使用了此链接中解释的 freezeColors 和 cbfreeze: http://blogs.mathworks.com/pick/2009/07/24/using-multiple-colormaps-in-a-single-figure/

但是一件事奏效了,却把另一件事搞砸了(可能都是我的错)。我想学习如何在不使用外部 m 文件的情况下完全控制我的对象。

感谢任何帮助。

最佳答案

基本思想是连接颜色图,然后移动/缩放不同绘图句柄的颜色数据 (CData) 以与颜色图的所需部分对齐。因此,在不知道您的自定义函数或特定数据是什么的情况下,您可以执行类似 colormap(topobathy(64); redwhitegreen(64)) 的操作,然后缩放 CData b 的范围是[1,64],cCData 的范围是[65,128]。

在 MathWorks 网站上有一个优秀指南解释了所有这些(甚至像你的例子一样使用 surf()pcolor() ):

http://www.mathworks.com/support/tech-notes/1200/1215.html#Example_1

对于颜色条,您可以用类似的方式伪造刻度和标签。这是为上述示例制作颜色条的粗略镜头:

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)

enter image description here

关于Matlab:如何将不同的颜色图/颜色条分配给同一图中的不同表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073113/

相关文章:

python - 将颜色条置于图中

python - 根据颜色图的 2D 颜色误差条

bash - 运行 matlab 命令行并自动运行 unix 服务器 bjob​​s

matlab - 如何使用 GPML (Matlab) 制作二维高斯过程进行回归?

MatLab:对数 z 轴和 bar3 的奇怪显示

image - Matlab 中的 Geoshow - 打印到 tiff 文件时面部颜色发生变化

matlab - 如何在 Matlab 指南中从先前 session 加载数据/从编辑文本框存储数据?

matlab - MATLAB矩阵的互信息

matlab - 如何在图形中添加 x 轴线? (matlab)

matplotlib - matplotlib.colors.LogNorm 中的零问题