Как мне установить прибой на один цвет (без градиента) в моем matlab-сюжете? - PullRequest
17 голосов
/ 29 января 2009

Мой набор данных состоит из трех векторов (x, y и z). Я отображаю эти значения в виде точек на трехмерном графике с plot3 (x, y, z), что нормально. Я также хочу показать самолет в том же сюжете. Чтобы получить данные этого графика, я использую линейную регрессию по x и y, чтобы получить новый z.

Вот как это выглядит:

alt text

Я хочу, чтобы прибой был заполнен только одним цветом (скажем, голубым или серым) и установил прозрачность, чтобы сделать его прозрачным Как я могу это сделать?

Ответы [ 4 ]

26 голосов
/ 29 января 2009

Самый простой способ создать поверхность, которая имеет только 1 цвет и заданное значение прозрачности, - это установить свойства FaceColor и FaceAlpha объекта поверхности:

hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);

В этом примере цвет поверхности устанавливается красным, а прозрачность - 0,5. Вы также можете установить свойства ребра (с помощью «EdgeColor» и «EdgeAlpha»).

4 голосов
/ 15 сентября 2012

Для завершения ответа от gnovice может потребоваться дополнительный ингредиент в set(hsurface...) (Matlab R2010b 64):

hSurface = surf(...your arguments to create the surface object...);
set(hSurface, 'FaceColor',[1 0 0], 'FaceAlpha',0.5, 'EdgeAlpha', 0);

чтобы сделать невидимыми двухточечные края нанесенной поверхности

4 голосов
/ 29 января 2009

Мне не понятно, что ты хочешь делать. Когда вы говорите один цвет для серфинга, вы подразумеваете ровно один цвет, или вы хотите иметь оттенки серого?

Вот код, который будет выполнять различные действия, вы можете выбрать, какие строки использовать:

x = rand(1,20);
y = rand(1,20);
z = rand(1,20);

[X,Y] = meshgrid(linspace(0,1,10),linspace(0,1,10));
Z = rand(10)*0.1;

clf
plot3(x,y,z,'.');
hold on
h = surf(X,Y,Z)
hold off

%% This will change the color
colormap(copper)
%% This will remove colordata
set(h, 'cdata',zeros(10))
%% This will make transparent
alpha(0.5)
1 голос
/ 29 января 2009

@ matlabDoug имеет то, что вам нужно, я думаю. Свойство cdata содержит данные о цвете, к которым применяется карта цветов. Установка для него массива того же размера, что и данные вашей поверхности, причем каждый элемент в этом массиве имеет одинаковое значение, сделает вашу поверхность одним цветом. При использовании цветовой карты по умолчанию установка всего в cdata на ноль сделает вашу поверхность синей, а установка всего на 1 сделает поверхность красной. Затем вы можете поиграть с альфой, чтобы сделать ее прозрачной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...