当前位置: 首页 > article >正文

【数学建模】利用Matlab绘图(2)

一、Matlab中plot函数的基本用法

在matlab中,函数的基本用法主要包括以下几种

第一类:

plot(X,Y,LineSpec)

第二类:

plot(tbl,xvar,yvar)

1.1 第一类

1.1.1x-y坐标

x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种基本的x和y坐标类型,关于标记的详细说明,请参见 1.2 节。

绘图类型如何指定代码示例例图

将x和y指定为标量并包含一个标记

plot(1,2,'or')

将x和y指定为长度相同的向量并包含一个标记
plot([1 3 5], [2 4 6],':ob')

使用向量连续给定多组点
plot([1 2 3],[6 8 9],':+b',[3 5 6],[ 8 9 10],'--or')

x或y共享一组坐标
plot([1 2 3],[3 5 6;8 9 10],'--or')

将会为每一列绘制一条线
plot([1 2 3;6 8 9],[3 5 6;8 9 10],'--or')

1.1.2LineSpec的用法

LineSpec的使用分为三个部分:‘abc',其中a代表线条的类型,b代表点的标记,c代表线条和点的颜色。下文将分别通过三个表格给出线条类型、点标记和颜色的具体表示。如果忽略线型并仅指定标记,则绘图只会显示标记,而不显示线条。

1.1.2.1线条的类型

线条

类型

类型

描述

代码示例例图
"-"

线

plot([1 2 3],[4 5 6],'-or')

"--"

线

plot([1 2 3],[4 5 6],'--or')

":"

线

plot([1 2 3],[4 5 6],':or')

"-."

线

plot([1 2 3],[4 5 6],'-.or')

 1.1.2.2点的标记

点的

标记

标记

描述

代码

示例

例图
"o"

plot([1 2 3],[4 5 6],'--or')

"+"

plot([1 2 3],[4 5 6],'--+r')

"*"

plot([1 2 3],[4 5 6],'--*r')

"."
plot([1 2 3],[4 5 6],'--.r')

"x"

plot([1 2 3],[4 5 6],'--xr')

"_"

线

plot([1 2 3],[4 5 6],'--_r')

"|"

线

plot([1 2 3],[4 5 6],'--|r')

"square"

plot([1 2 3],[4 5 6],'--squarer')

"diamond"

plot([1 2 3],[4 5 6],'--diamondr')

"^"

plot([1 2 3],[4 5 6],'--^r')

"v"

plot([1 2 3],[4 5 6],'--vr')

">"

plot([1 2 3],[4 5 6],'-->r')

"<"

plot([1 2 3],[4 5 6],'--<r')

"pentagram"

plot([1 2 3],[4 5 6],'--pentagramr')

"hexagram"

plot([1 2 3],[4 5 6],'--hexagramr')

 1.1.2.3颜色

颜色

名称

名称

代码示例例图
"red""r"
plot([1 2 3],[4 5 6],'--or')

"green""g"
plot([1 2 3],[4 5 6],'--og')

"blue""b"
plot([1 2 3],[4 5 6],'--ob')
"cyan""c"
plot([1 2 3],[4 5 6],'--oc')
"magenta""m"
plot([1 2 3],[4 5 6],'--om')
"yellow""y"
plot([1 2 3],[4 5 6],'--oy')
"black""k"
plot([1 2 3],[4 5 6],'--ok')
"white""w"
plot([1 2 3],[4 5 6],'--ow')

1.1.3利用excel中的坐标数据绘图

1.1.3.1将excel的数据导入向量

利用matlab中的readmatrix函数读取excel表中的数据

%读取excel表格中的数据
data=redmatrix('绝对路径\文件名.xlsx')
%读取excel中的第n列
data_n=data(:,n);
1.1.3.2示例

点击“文件”以获取示例中的 Excel 数据,接着通过读取 Excel 表格中的数据并将其转换为向量,再利用plot函数将各个散点连接起来,就能得到一个图像。

下面是具体的代码:

data = readmatrix('D:\Desktop\point_data.xlsx');
x_data = data(:, 1);
y_data = data(:, 2);
plot(x_data,y_data,'--.r')

我们就可以得到如图所示的一个散点图:

 

1.2第二类

1.2.1table的用法

table(列表1,列表2,列表3,······,列表n),其中列表1,2,···,n为一个列向量,每一个列表都组成了表格中的一列。在table中我们可以通过VariableNames指定表的每一列的名称,通过RowNames可以指定表的每一行的行名称。下面给出一个示例:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'})

运行这段代码我们可以在命令行窗口得到一个如图所示的表:

1.2.2利用table和plot函数绘图

仍然以上述的表为例,利用plot函数画图,代码如下所示:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
tbl=table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'});
plot(tbl,1,2)

得到的图像如图所示: 

 但我们也可以只指定y向量,这样子得到的就是一个时间表,下面给出例子:

代码:

a=[1;2;3];
b=[4;5;6];
c=[7;8;9];
tbl=table(a,b,c,'VariableNames',{'first' 'second' 'third'},'RowNames',{'first' 'second' 'third'});
plot(tbl,3)

例图:

1.3 Line属性

通过修改plot函数中的Line属性,我们可以调整图像中线条的颜色、粗细以及其他各种样式。

1.3.1线条

属性

名称

属性描述

示例

代码

例图
Color

线

颜色

名称

plot([1 2 3], [4 5 6], 'Color','r')

RGB三元组
plot([1 2 3], [4 5 6], 'Color','[0,1,0]')

16进制颜色代码
plot([1 2 3], [4 5 6], 'Color','#FFFF00')

ColorMode

控制如何设置Color

auto(默认)
plot([1 2 3], [4 5 6], 'ColorMode','auto')

manual
plot([1 2 3], [4 5 6], 'ColorMode','manual')

LineStyle线型,且必为右侧给出的五种之一'-'(实线)
plot([1 2 3], [4 5 6], 'LineStyle','-')

'--'(虚线)
plot([1 2 3], [4 5 6], 'LineStyle','--')
':'(点线)
plot([1 2 3], [4 5 6], 'LineStyle',':')
'-.'(点划线)
plot([1 2 3], [4 5 6], 'LineStyle','-.')
'none'(无)
plot([1 2 3], [4 5 6], 'LineStyle','none')
LineStyleMode控制如何设置LineStyleauto(默认)
plot([1 2 3], [4 5 6], 'LineStyleMode','auto')
manual
plot([1 2 3], [4 5 6], 'LineStyleMode','manual')
LineWidth线条宽度(正值),如果线条具有标记,那么线条宽度也会影响标记边0.5
plot([1 2 3], [4 5 6], 'LineWidth',0.5)

2.0
plot([1 2 3], [4 5 6], 'LineWidth',2.0)
SeriesIndex序列索引

LineJoin线条变焦的样式'round'
plot([1 2 3], [4 5 4], 'LineJoin','round','LineWidth',10.0)
'miter'
plot([1 2 3], [4 5 4], 'LineJoin','miter','LineWidth',10.0)
'chamfer'
plot([1 2 3], [4 5 4], 'LineJoin','chamfer','LineWidth',10.0)
AlignVertexCenters锐化垂直线和水平线on
off可能会出现颜色不平滑的现象

 1.3.2标记

属性名称属性描述示例代码例图
Marker标记符号与上文1.1.2中的符号完全相同
MarkerMode控制如何设置Markerauto
manual
MarkerIndices需要标记的点的索引在具体的点显示标记
plot([1 2 3 4 5 6 7 8 9 10], [1 4 7 9 12 15 18 21 24 27 ], Marker='o',MarkerIndices=[1 3 7 9])

每隔几个点显示一次
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y))

MarkerSize标记的大小(正值)6
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y),'MarkerSize',6)

60
y=[1 4 7 9 12 15 18 21 24 27 ];
plot([1 2 3 4 5 6 7 8 9 10], y, '-o','MarkerIndices',1:2:length(y),'MarkerSize',60)
MarkerEdgeColor标记轮廓颜色与1.3.1线条中的颜色相同
MarkerFaceColor标记填充颜色

1.3.3笛卡尔坐标数据 

属性

名称

属性描述代码示例例图
XDatax值,指定为向量对于二维图像,不指定x值则将YData的索引用作该绘图的x值
x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot(y,'--or')

x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot(x,y,'--or')

对于三维图像,不指定x值则将ZData的索引用作该绘图的x值
x=[1 3 5 7];
y=[2 4 6 8];
z=[1 4 9 16];
plot3(x,y,z,'--or')

XDataMode控制如何设置XData属性autoXData可以为YData的索引
manualXData不自动更新
XDataSource链接到XData的变量
YData与XData相同
YDataMode与XDataMode相同
YDataSource与XDataSource相同
ZData与XData相同
ZDataMode与XDataMode相同
ZDataSource与XDataSource相同
AffectAutoLimits在做表去范围中包括数据范围on
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or',x2,y2,':+b','AffectAutoLimits','on')

off

x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or',x2,y2,':+b','AffectAutoLimits','off')

 1.3.4图例

本段中的一些用法会在1.4中具体给出

属性名称属性描述代码示例例图
DisplayName图例标签,只有调用legend命令后,才会显示图例。
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
plot(x1,y1,'--or','DisplayName','D1')
hold on;%保持当前图形,在同一张图上绘制第二组数据
plot(x2,y2,':+b','DisplayName','D2')
legend show;%添加图例

Annotation在图例中包含对象on在图例中包含对象
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
P1=plot(x1,y1,'--or','DisplayName','D1');
hold on;%保持当前图形,在同一张图上绘制第二组数据
P2=plot(x2,y2,':+b','DisplayName','D2');

P1.Annotation.LegendInformation.IconDisplayStyle = "on";%不隐藏第一组数据的图例
legend show;%添加图例
off不在图例中包含对象
x1=[1 3 5 7];
y1=[2 4 6 8];
x2=[-5 1 5 7];
y2=[2 6 10 14];
P1=plot(x1,y1,'--or','DisplayName','D1');
hold on;%保持当前图形,在同一张图上绘制第二组数据
P2=plot(x2,y2,':+b','DisplayName','D2');

P1.Annotation.LegendInformation.IconDisplayStyle = "off";%隐藏第一组数据的图例
legend show;%添加图例

二、Matlab中plot3函数的基本用法

plot3与plot函数除了在输入的时候一个需要输入三个向量一个只需要输入两个向量,剩下的在各类用法方面几乎相同或极为相似。

三、plot和plot3函数绘图的例子

3.1sinx和cosx的图像

3.1.1代码示例

x1=0:pi/100:2*pi;
y1=sin(x1);
x2=0:pi/100:2*pi;
y2=cos(x2);
plot(x1,y1, 'DisplayName','sinx', ...
    'Color','r', ...
    'LineStyle','-' ...
    ,'LineWidth',1.0, ...
    'Marker','o', ...
    'MarkerIndices',1:10:length(y1),'MarkerSize',5,'MarkerEdgeColor','b','MarkerFaceColor','y')
hold on;
plot(x2,y2,'DisplayName','cosx', ...
    'Color','k', ...
    'LineStyle','--' ...
    ,'LineWidth',3.0, ...
    'Marker','+', ...
    'MarkerIndices',1:15:length(y2),'MarkerSize',7,'MarkerEdgeColor','g','MarkerFaceColor','none')
legend show;

3.1.2例图

3.2不同底数的log图像

3.2.1代码示例

x1=1:1000;
y1=log2(x1);
y2=log(x1)/log(5);
y3=log10(x1);
plot(x1,y1,'--.r','DisplayName','log2(x)')
hold on;
plot(x1,y2,'-.k','DisplayName','log5(x)')
hold on;
plot(x1,y3,':.c','DisplayName','log10(x)')
legend show;

3.2.2例图

3.3螺旋线

3.3.1示例代码

x=0:pi/100:10*pi;
y=sin(x);
z=cos(x);
plot3(x,y,z,'--.b')

3.3.2例图


http://www.kler.cn/a/452314.html

相关文章:

  • springboot使用自定义的线程池 完成 多线程执行网络请求,返回数据后,统一返回给前段
  • 【Python高级353】python实现多线程版本的TCP服务器
  • 【论文阅读笔记】IC-Light
  • PetaLinux 内核输出信息的获取方式
  • 2021-04-08 VSC++: 降序折半查找。
  • (echarts)数据地图散点类型根据条件设置不同的标记图片
  • linux 常用 Linux 命令指南
  • Linux大数据方向shell
  • 借助Aspose.html控件, 使用 Java 编程将 HTML 转换为 BMP
  • 基于java出租车计价器设计与实现【源码+文档+部署讲解】
  • ffmpeg之播放一个yuv视频
  • 常见问题解决方案:Keen CommonWeb 开源项目
  • CVPR-2024 | 具身导航模型大一统!NaviLLM:学习迈向具身导航的通用模型
  • Unity中如何修改Sprite的渲染网格
  • NFC 碰一碰发视频源码搭建技术详解,支持OEM
  • 从零用java实现 小红书 springboot vue uniapp (6)用户登录鉴权及发布笔记
  • 【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
  • 前端三大主流框架:React、Vue、Angular
  • 网络管理-期末项目(附源码)
  • PySide6如何实现点击TableWidget列表头在该列右侧显示列表选择框筛选列数据
  • 数据仓库是什么?数据仓库简介
  • 设计一个自己的AI Agent
  • .NET 9 中的 多级缓存 HybridCache
  • Android绘图Path基于LinearGradient线性动画渐变,Kotlin(2)
  • HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐
  • 【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)