一、Matlab中plot函数的基本用法
在matlab中,函数的基本用法主要包括以下几种
第一类:
Matlab
plot(X,Y,LineSpec)
第二类:
Matlab
plot(tbl,xvar,yvar)
1.1 第一类
1.1.1x-y坐标
x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种基本的x和y坐标类型,关于标记的详细说明,请参见 1.2 节。
|-------|-----------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------|
| 绘图类型 | 如何指定 | 代码示例 | 例图 |
| 单 点 | 将x和y指定为标量并包含一个标记 | Matlab plot(1,2,'or')
| |
| 一 组 点 | 将x和y指定为长度相同的向量并包含一个标记 | Matlab plot([1 3 5], [2 4 6],':ob')
| |
| 多 组 点 | 使用向量连续给定多组点 | Matlab plot([1 2 3],[6 8 9],':+b',[3 5 6],[ 8 9 10],'--or')
| |
| 多 组 点 | x或y共享一组坐标 | Matlab plot([1 2 3],[3 5 6;8 9 10],'--or')
| |
| 多 组 点 | 将会为每一列绘制一条线 | Matlab 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线条的类型
|-------|-------|--------------------------------------------|----------------------------------------------------------------------------|
| 线条 类型 | 类型 描述 | 代码示例 | 例图 |
| "-" | 实 线 | Matlab plot([1 2 3],[4 5 6],'-or')
| |
| "--" | 虚 线 | Matlab plot([1 2 3],[4 5 6],'--or')
| |
| ":" | 点 线 | Matlab plot([1 2 3],[4 5 6],':or')
| |
| "-." | 点 划 线 | Matlab plot([1 2 3],[4 5 6],'-.or')
| |
1.1.2.2点的标记
|-------------|---------|----------------------------------------------------|----------------------------------------------------------------------------|
| 点的 标记 | 标记 描述 | 代码 示例 | 例图 |
| "o" | 圆 形 | Matlab plot([1 2 3],[4 5 6],'--or')
| |
| "+" | 加 号 | Matlab plot([1 2 3],[4 5 6],'--+r')
| |
| "*" | 星 号 | Matlab plot([1 2 3],[4 5 6],'--*r')
| |
| "." | 点 | Matlab plot([1 2 3],[4 5 6],'--.r')
| |
| "x" | 叉 号 | Matlab plot([1 2 3],[4 5 6],'--xr')
| |
| "_" | 水 平 线 条 | Matlab plot([1 2 3],[4 5 6],'--_r')
| |
| "|" | 竖 直 线 条 | Matlab plot([1 2 3],[4 5 6],'--|r')
| |
| "square" | 方 形 | Matlab plot([1 2 3],[4 5 6],'--squarer')
| |
| "diamond" | 菱 形 | Matlab plot([1 2 3],[4 5 6],'--diamondr')
| |
| "^" | 上 三 角 | Matlab plot([1 2 3],[4 5 6],'--^r')
| |
| "v" | 下 三 角 | Matlab plot([1 2 3],[4 5 6],'--vr')
| |
| ">" | 右 三 角 | Matlab plot([1 2 3],[4 5 6],'-->r')
| |
| "<" | 左 三 角 | Matlab plot([1 2 3],[4 5 6],'--<r')
| |
| "pentagram" | 五 角 形 | Matlab plot([1 2 3],[4 5 6],'--pentagramr')
| |
| "hexagram" | 六 角 形 | Matlab plot([1 2 3],[4 5 6],'--hexagramr')
| |
1.1.2.3颜色
|-----------|------|--------------------------------------------|----------------------------------------------------------------------------|
| 颜色 名称 | 短 名称 | 代码示例 | 例图 |
| "red" | "r" | Matlab plot([1 2 3],[4 5 6],'--or')
| |
| "green" | "g" | Matlab plot([1 2 3],[4 5 6],'--og')
| |
| "blue" | "b" | Matlab plot([1 2 3],[4 5 6],'--ob')
| |
| "cyan" | "c" | Matlab plot([1 2 3],[4 5 6],'--oc')
| |
| "magenta" | "m" | Matlab plot([1 2 3],[4 5 6],'--om')
| |
| "yellow" | "y" | Matlab plot([1 2 3],[4 5 6],'--oy')
| |
| "black" | "k" | Matlab plot([1 2 3],[4 5 6],'--ok')
| |
| "white" | "w" | Matlab plot([1 2 3],[4 5 6],'--ow')
| |
1.1.3利用excel中的坐标数据绘图
1.1.3.1将excel的数据导入向量
利用matlab中的readmatrix函数读取excel表中的数据
Matlab
%读取excel表格中的数据
data=redmatrix('绝对路径\文件名.xlsx')
%读取excel中的第n列
data_n=data(:,n);
1.1.3.2示例
点击"文件"以获取示例中的 Excel 数据,接着通过读取 Excel 表格中的数据并将其转换为向量,再利用plot函数将各个散点连接起来,就能得到一个图像。
下面是具体的代码:
Matlab
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可以指定表的每一行的行名称。下面给出一个示例:
Matlab
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函数画图,代码如下所示:
Matlab
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向量,这样子得到的就是一个时间表,下面给出例子:
代码:
Matlab
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 | 线 条 颜 色 | 颜色 名称 | Matlab plot([1 2 3], [4 5 6], 'Color','r')
| |
| Color | 线 条 颜 色 | RGB三元组 | Matlab plot([1 2 3], [4 5 6], 'Color','[0,1,0]')
| |
| Color | 线 条 颜 色 | 16进制颜色代码 | Matlab plot([1 2 3], [4 5 6], 'Color','#FFFF00')
| |
| ColorMode | 控制如何设置Color | auto(默认) | Matlab plot([1 2 3], [4 5 6], 'ColorMode','auto')
| |
| ColorMode | 控制如何设置Color | manual | Matlab plot([1 2 3], [4 5 6], 'ColorMode','manual')
| |
| LineStyle | 线型,且必为右侧给出的五种之一 | '-'(实线) | Matlab plot([1 2 3], [4 5 6], 'LineStyle','-')
| |
| LineStyle | 线型,且必为右侧给出的五种之一 | '--'(虚线) | Matlab plot([1 2 3], [4 5 6], 'LineStyle','--')
| |
| LineStyle | 线型,且必为右侧给出的五种之一 | ':'(点线) | Matlab plot([1 2 3], [4 5 6], 'LineStyle',':')
| |
| LineStyle | 线型,且必为右侧给出的五种之一 | '-.'(点划线) | Matlab plot([1 2 3], [4 5 6], 'LineStyle','-.')
| |
| LineStyle | 线型,且必为右侧给出的五种之一 | 'none'(无) | Matlab plot([1 2 3], [4 5 6], 'LineStyle','none')
| |
| LineStyleMode | 控制如何设置LineStyle | auto(默认) | Matlab plot([1 2 3], [4 5 6], 'LineStyleMode','auto')
||
| LineStyleMode | 控制如何设置LineStyle | manual | Matlab plot([1 2 3], [4 5 6], 'LineStyleMode','manual')
||
| LineWidth | 线条宽度(正值),如果线条具有标记,那么线条宽度也会影响标记边 | 0.5 | Matlab plot([1 2 3], [4 5 6], 'LineWidth',0.5)
| |
| LineWidth | 线条宽度(正值),如果线条具有标记,那么线条宽度也会影响标记边 | 2.0 | Matlab plot([1 2 3], [4 5 6], 'LineWidth',2.0)
| |
| SeriesIndex | 序列索引 | | | |
| LineJoin | 线条变焦的样式 | 'round' | Matlab plot([1 2 3], [4 5 4], 'LineJoin','round','LineWidth',10.0)
| |
| LineJoin | 线条变焦的样式 | 'miter' | Matlab plot([1 2 3], [4 5 4], 'LineJoin','miter','LineWidth',10.0)
| |
| LineJoin | 线条变焦的样式 | 'chamfer' | Matlab plot([1 2 3], [4 5 4], 'LineJoin','chamfer','LineWidth',10.0)
| |
| AlignVertexCenters | 锐化垂直线和水平线 | on || |
| AlignVertexCenters | 锐化垂直线和水平线 | off | 可能会出现颜色不平滑的现象 | |
1.3.2标记
|-----------------|--------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| 属性名称 | 属性描述 || 示例代码 | 例图 |
| Marker | 标记符号与上文1.1.2中的符号完全相同 ||||
| MarkerMode | 控制如何设置Marker | auto |||
| MarkerMode | 控制如何设置Marker | manual |||
| MarkerIndices | 需要标记的点的索引 | 在具体的点显示标记 | Matlab 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])
| |
| MarkerIndices | 需要标记的点的索引 | 每隔几个点显示一次 | Matlab 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 | Matlab 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)
| |
| MarkerSize | 标记的大小(正值) | 60 | Matlab 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.1线条中的颜色相同 |||
1.3.3笛卡尔坐标数据
|------------------|---------------|--------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| 属性 名称 | 属性描述 || 代码示例 || 例图 ||
| XData | x值,指定为向量 | 对于二维图像,不指定x值则将YData的索引用作该绘图的x值 | Matlab x=[1 3 5 7]; y=[2 4 6 8]; z=[1 4 9 16]; plot(y,'--or')
| Matlab x=[1 3 5 7]; y=[2 4 6 8]; z=[1 4 9 16]; plot(x,y,'--or')
| | |
| XData | x值,指定为向量 | 对于三维图像,不指定x值则将ZData的索引用作该绘图的x值 | Matlab x=[1 3 5 7]; y=[2 4 6 8]; z=[1 4 9 16]; plot3(x,y,z,'--or')
|| ||
| XDataMode | 控制如何设置XData属性 | auto | XData可以为YData的索引 ||||
| XDataMode | 控制如何设置XData属性 | manual | XData不自动更新 ||||
| XDataSource | 链接到XData的变量 ||||||
| YData | 与XData相同 ||||||
| YDataMode | 与XDataMode相同 ||||||
| YDataSource | 与XDataSource相同 ||||||
| ZData | 与XData相同 ||||||
| ZDataMode | 与XDataMode相同 ||||||
| ZDataSource | 与XDataSource相同 ||||||
| AffectAutoLimits | 在做表去范围中包括数据范围 | on | Matlab 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')
|| ||
| AffectAutoLimits | 在做表去范围中包括数据范围 | off | Matlab 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命令后,才会显示图例。 | Matlab 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 | 在图例中包含对象 | Matlab 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;%添加图例
| |
| Annotation | 在图例中包含对象 | off | 不在图例中包含对象 | Matlab 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代码示例
Matlab
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代码示例
Matlab
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示例代码
Matlab
x=0:pi/100:10*pi;
y=sin(x);
z=cos(x);
plot3(x,y,z,'--.b')