三维封闭曲线着色,在图中插入子图,指定显示的图例。
立体图像着色
主要使用函数fill3()
- 功能:给三维图像着色
- 调用规则:fill3(X, Y, Z, C, 'PropertyName', PropertyValue)
- 输入
- X、Y 、Z指坐标
- C:颜色
- 'PropertyName':可选属性,主要使用了透明度 alpha
- 可以使用 fig = get(gcf) 获取图形对象的属性和值;
ax = get(gca) 获取坐标轴的属性和值
- 可以使用 fig = get(gcf) 获取图形对象的属性和值;
使用fill3函数绘制一个立方体,并指定每个面的颜色,代码如下:
figure(1);clf;hold on
% 绘制上面
x1 = [0,1,1,0];y1 = [0,0,1,1];z1 = [1,1,1,1];
up_color = [0.7490,0.9490,0.9686];
h1 = fill3(x1,y1,z1,up_color,'FaceAlpha',0.5);
% 绘制侧面
x2 = [0,1,1,0];y2 = [1,1,1,1];z2 = [0,0,1,1];
side_color = [0,4,0.25,0.67];
h2 = fill3(x2,y2,z2,side_color,'FaceAlpha',0.5);
% 绘制正面
x3 = [1,1,1,1];y3 = [0,0,1,1];z3 = [0,1,1,0];
front_color = [0.172,0.475,0.27];
h3 = fill3(x3,y3,z3,front_color,'FaceAlpha',0.5);
% 添加图例
legend({'上面','侧面','正面'},'FontSize',12,'Location','eastoutside')
% 显示网格
grid on
hold off
# 指定观察到角度
view([140,23.5])
观察的角度可以先手动调整,然后获取观察的角度。
- 进入手动调整界面
- 按下旋转按钮,然后便可任意拖动
- 获取当前视角
ax = get(gca);
ax.View
图中图
主要使用函数axes()
- 功能:创建坐标系
- 调用规则:axes(Name,Value)
- 在当前坐标系中在创建一个子坐标系
- 参数中使用了'position',指放置的位置和大小。Value=[0.1,0.1,0.3,0.4]指子坐标系的原点相对于整个图像的位置是[0.1, 0.1],长和宽分别是0.3和0.4
axes('Position',[0.28,0.62,0.28,0.25]); % 放置子图在主图中的位置
x4 = [1,0,0]; y4 = [0,1,0]; z4 = [0,0,1];
bevel_color = [0.82,0.15,0.47];
h4 = fill3(x4,y4,z4,bevel_color,'FaceAlpha',0.5);
显示指定图例
如果只想显示部分图例,在绘图时可以用变量接受图像,然后在legend中指定显示的图例。如,在图中只想显示正面和小斜面的图例,则可以按照如下方式设置
legend([h3,h4],{'正面','小斜面'},'FontSize',12)
完整程序
figure(1);clf;hold on
% 绘制上面
x1 = [0,1,1,0];y1 = [0,0,1,1];z1 = [1,1,1,1];
up_color = [0.7490,0.9490,0.9686];
h1 = fill3(x1,y1,z1,up_color,'FaceAlpha',0.5);
% 绘制侧面
x2 = [0,1,1,0];y2 = [1,1,1,1];z2 = [0,0,1,1];
side_color = [0,4,0.25,0.67];
h2 = fill3(x2,y2,z2,side_color,'FaceAlpha',0.5);
% 绘制正面
x3 = [1,1,1,1];y3 = [0,0,1,1];z3 = [0,1,1,0];
front_color = [0.172,0.475,0.27];
h3 = fill3(x3,y3,z3,front_color,'FaceAlpha',0.5);
% 指定观察到角度
view([140,23.5])
% 绘制子图
axes('Position',[0.28,0.62,0.28,0.25]); % 放置子图在主图中的位置
x4 = [1,0,0]; y4 = [0,1,0]; z4 = [0,0,1];
bevel_color = [0.82,0.15,0.47];
h4 = fill3(x4,y4,z4,bevel_color,'FaceAlpha',0.5);
view([140,23.5])
% 添加图例
legend([h3,h4],{'正面','小斜面'},'FontSize',12)
% 显示网格
grid on
hold off