我在 Matlab 中绘制了两个表面,地平面是恒定的,水位是随时间变化的。
我使用一个if
语句来改变colormap
水的深度,由两个阈值确定(在阈值以下的代码中由数组表示C
)
if max(C(:)) < 2
colormap([0.5 0.25 0 ; 0 0.8 1]);
elseif max(C(:)) >= 2 && max(C(:)) < 3
colormap([0.5 0.25 0 ; 0 0.8 1 ; 0 0.5 0.65]);
elseif max(C(:)) >= 3
colormap([0.5 0.25 0 ; 0 0.8 1 ; 0 0.5 0.65 ; 0 0.2 0.3]);
end
结果是,当水位低于阈值 1 时,它是浅蓝色,在两个阈值之间它会变暗,而高于阈值 2 它会变暗。
我的问题是当我绘制图例时
legend('ground','water');
...我只得到一种代表水的颜色,它会根据最大深度而变化。如何使用颜色示例制作显示所有四个类别的静态图例:
- (棕色)接地
- (浅蓝色)低于阈值 1 的水位
- (标准蓝色)阈值之间的水位
- (深蓝色)水位高于阈值 2
我能想到的唯一解决方案是在轴的某处(不会被注意到的地方)用正确的蓝色制作 3 个整洁的小补丁,然后将图例指向它们而不是水面。但这将是一个真正糟糕的解决方案......