如何在Matlab中更改表面图的颜色

时间:2019-10-27 12:56:54

标签: matlab plot matlab-figure surface

我正在尝试绘制表面。但是,我不太了解如何更改情节的颜色。我研究并尝试了各种选择,但没有取得太大的成功。这是表面图的代码:

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;

我用colormapjetwinter参数尝试了不同的hsv。我还尝试了类似于以下内容的各种选项:

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

但是,我得到的只是一个带有深色阴影的人物,如下所示:

Surface plot with dark colors

我想将表面图的颜色更改为较浅的颜色,例如浅蓝色,青色或浅绿色的阴影。任何帮助,将不胜感激。

预先感谢

A。

1 个答案:

答案 0 :(得分:2)

您现在主要看到的是边缘,默认情况下为黑色。您可以做几件事。

  1. 完全隐藏边缘
H.EdgeColor = 'none';
  1. 在边缘设置一些alpha值(透明度)
H.EdgeAlpha = 0.5;
  1. 使用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