三维封闭曲线着色,在图中插入子图,指定显示的图例。

Posted liuxiang2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三维封闭曲线着色,在图中插入子图,指定显示的图例。相关的知识,希望对你有一定的参考价值。

立体图像着色

主要使用函数fill3()

  • 功能:给三维图像着色
  • 调用规则:fill3(X, Y, Z, C, ‘PropertyName‘, PropertyValue)
  • 输入
    • X、Y 、Z指坐标
    • C:颜色
    • ‘PropertyName‘:可选属性,主要使用了透明度 alpha
      • 可以使用 fig = get(gcf) 获取图形对象的属性和值;
        ax = get(gca) 获取坐标轴的属性和值

使用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

技术图片

以上是关于三维封闭曲线着色,在图中插入子图,指定显示的图例。的主要内容,如果未能解决你的问题,请参考以下文章

线子图(时间序列)中的注释(图例文本)

在带有子图的 geopandas 图中添加图例会改变图的大小

在 R plotly 子图中,如何只显示一个图例?

如何为子图有一个共同的图例?

次要情节之外的主要人物图例

如何将echarts图例与曲线显示顺序不一致