Matlab: как сгладить цвета матрицы в функции plot3()?

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

plot3(Grid.x1(:,:),Grid.x2(:,:),phi(:,:))

введите здесь описание изображения

Как сгладить окраску этого сюжета? Спасибо!


person Community    schedule 16.10.2012    source источник


Ответы (1)


Вы можете использовать varicolor из FileExchange для построения и управления цветовым спектром непрерывного диапазона. Таким образом, переход между разными линиями будет казаться более естественным, а проксимальные линии будут иметь схожие цвета.

Вы можете прочитать больше и увидеть примеры использования здесь http://blogs.mathworks.com/pick/2008/08/15/colors-for-your-multi-line-plots/

Пример:

[X,Y,Z] = peaks(128);

% raw plot3()
figure; plot3(X, Y, Z); 

введите здесь описание изображения

% define set equal to line number
ColorSet = varycolor(128);

% smooth plot3()
figure; hold all;
set(gca, 'ColorOrder', ColorSet);
plot3(X, Y, Z); view(3); 

введите здесь описание изображения

Обновление: для непрерывного трехмерного графика (т. е. поверхности) вы можете использовать surfl вместо plot3 и отображать данные в виде трехмерного График поверхности (с затенением). На получившуюся поверхность можно дополнительно нанести любой colormap, т.е. gray или ColorSet как указано выше.

surfl(X,Y,Z);
shading interp;
colormap(gray); 

введите здесь описание изображения

person gevang    schedule 16.10.2012
comment
gevang: Спасибо за ответ, но я хочу, чтобы график выглядел гладким, а это значит, что я хотел бы избавиться от пробелов между строками, представляющими векторы матрицы. - person ; 17.10.2012
comment
@S_H Smooth не был ясен из исходного поста, тем более что вы просили сгладить окраску сюжета. Что вам нужно, так это поверхностный график вместо отдельных 3D-графиков. Смотрите мой обновленный ответ на предложение. - person gevang; 17.10.2012