Как изменить цвет поверхности графика в Matlab - PullRequest
0 голосов
/ 27 октября 2019

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

clear all;
[X,Y]=meshgrid(-10:.1:10);

p=X;

[X, Y] = meshgrid(-20:.2:20);

q=Y;

a = 10;
b = 20;

Z=2*a.*p+p.^2-2*b.*q-q.^2;

figure;

H=surf(p,q,Z)

xlim([-10 10]);
ylim([-20 20]);

% colormap jet;

hold on;

view([150 25]);

xlabel('p');
ylabel('q');
zlabel('The Data Z');

print -r600 -depsc Figure.eps;

Я пробовал разные colormap с jet, winter или hsv аргументами. Я также пробовал различные варианты, подобные следующим:

c = jet(6);
colormap(c);

Однако все, что я получаю, это фигура с темным оттенком, подобная следующей:

Surface plot with dark colors

Я хотел бы изменить цвета графика поверхности на что-то более светлое, например, оттенки голубого, голубого или светло-зеленого. Любая помощь с этим будет высоко ценится.

Заранее спасибо,

A.

1 Ответ

2 голосов
/ 27 октября 2019

Прямо сейчас вы видите преимущественно края, которые по умолчанию чёрные. Есть пара вещей, которые вы можете сделать.

  1. Скрыть края полностью
H.EdgeColor = 'none';
Установить альфа-значение (прозрачность) по краям
H.EdgeAlpha = 0.5;
Нанесите на график ваши данные один раз с очень тонкой сеткой (как вы делаете сейчас), используя surf, установите цвет края на 'none', нанесите ваши данные с грубой сеткой, используя mesh, чтобы показать линии, делая это прощечтобы увидеть самолет.
% generate data
a = 10;
b = 20;

xv = -10:.1:10;
yv = -20:.2:20;
[X,Y]=meshgrid(xv,yv);

Z=2*a.*X+X.^2-2*b.*Y-Y.^2;

% make data more course.
xv_course = -10:1:10;
yv_course = -20:1:20;
[Xc,Yc]=meshgrid(xv_course,yv_course);
Zc = 2*a.*Xc+Xc.^2-2*b.*Yc-Yc.^2;

figure(1); clf; 
Hs = surf(X,Y,Z, 'EdgeColor', 'none');
colormap cool
hold on;
Hm = mesh(Xc,Yc,Zc, 'EdgeColor', 'k', 'FaceColor', 'none');

view([150 25]);

xlabel('x');
ylabel('y');
zlabel('The Data Z');

enter image description here

...