Я строю две поверхности в 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 аккуратных маленьких пятна где-то у оси (где это не будет замечено) в правильных синих цветах, а затем сделать так, чтобы легенда указывала на них, а не на поверхность воды. Но это было бы настоящим дерьмовым решением ...