Matlab: Как закрасить одиночную ячейку серф-сюжета

Я пытаюсь дифференцировать цвет отдельной ячейки графика на основе значения функции Z, в частности: X, Y - (nxm) матрица и определяют поверхность; Z - единицы (nxm), у которых есть некоторые определенные точки, установленные в 3 или 4 или 5

Я пытаюсь создать график для серфинга, где отдельные ячейки сетки со значением 3,4 или 5 окрашиваются по-другому, чем все остальные ячейки сетки поверхности.

вот код и изображение, которое я получаю (в данном конкретном случае есть только 1 точка Z со значением =3):

figure;surf(X,Y,Z)

В этом конкретном примере моя цель состоит в том, чтобы покрасить КРАСНУЮ ячейку сетки, соответствующую пику. Есть ли способ получить ее?

спасибо заранее

2 ответа

Просто чтобы убедиться

colormap(jet) 

здесь не работает? Один из способов, которые я сделал, это то, что в графическом интерфейсе вы можете вручную редактировать значения цветовой карты в цветовой карте.

Затем просто распечатайте карту цветов

cmap = colormap

И тогда эти значения могут быть использованы в вашей функции.

Как уже упоминалось в комментариях, цветовая карта является ответом. Сложная часть заключается в правильной настройке. Хитрость заключается в том, чтобы сделать цветовую карту больше, чем вам нужно, скажем, 10x3, сделать несколько ячеек внутри цветовой карты, а затем масштабировать Z, чтобы соответствовать этим ячейкам. Например:

cmap(1, 1) = [0 0 0];
cmap(2:4, 1) = [0 0 1];
cmap(5:7, 1) = [0 1 0];
cmap(8:10, 1) = [1 0 0];
colormap(cmap);

Это создает ячейки цветовой карты, в которые вы должны вписать свои значения Z. Вам нужно будет написать код перевода Z-значения. Вам нужно написать что-то, что превращает любой элемент Z, который равен 5, например, в 10.

Я сделал это для аналогичной проблемы с использованием изображений, поэтому, если вы работаете со мной, мы можем получить вам точный ответ.

Другие вопросы по тегам