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.
Я сделал это для аналогичной проблемы с использованием изображений, поэтому, если вы работаете со мной, мы можем получить вам точный ответ.