本文含有多图,请注意流量消耗!

# 基本绘图函数

# plot 函数

绘制二维线图。

# 向量和矩阵数据

  • plot (X,Y) 创建 Y 中数据对 X 中对应值的二维线图。

    要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

    要在同一组坐标区上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

  • plot (X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

有关 LineSpec 参数,参见本文 2.1 部分 ‘线型、标记和颜色’ 。

  • plot (X1,Y1,...,Xn,Yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。

  • plot (X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn) 可为每个 x-y 对组指定特定的线型、标记和颜色。您可以对某些 x-y 对组指定 LineSpec,而对其他对组省略它。例如,plot (X1,Y1,"o",X2,Y2) 对第一个 x-y 对组指定标记,但没有对第二个对组指定标记。

  • plot (Y) 绘制 Y 对一组隐式 x 坐标的图。

    1. 如果 Y 是向量,则 x 坐标范围从 1 到 length (Y)。

    2. 如果 Y 是矩阵,则对于 Y 中的每个列,图中包含一个对应的行。x 坐标的范围是从 1 到 Y 的行数。

    3. 如果 Y 包含复数,MATLAB 绘制 Y 的虚部对 Y 的实部的图。如果同时指定了 X 和 Y,虚部将被忽略。

  • plot (Y,LineSpec) 使用隐式 x 坐标绘制 Y,并指定线型、标记和颜色。

# 表数据

  • plot (tbl,xvar,yvar) 绘制表 tbl 中的变量 xvar 和 yvar。要绘制一个数据集,请为 xvar 指定一个变量,为 yvar 指定一个变量。要绘制多个数据集,请为 xvar、yvar 或两者指定多个变量。如果两个参量都指定多个变量,它们指定的变量数目必须相同。 (自 R2022a 起)

  • plot (tbl,yvar) 绘制表中的指定变量对表的行索引的图。如果该表是时间表,则绘制指定变量对时间表的行时间的图。 (自 R2022a 起)

# 其他选项

  • plot (ax,___) 在目标坐标区上显示绘图。将坐标区指定为上述任一语法中的第一个参量。

  • plot (___,Name,Value) 使用一个或多个名称 - 值参量指定 Line 属性。这些属性应用于绘制的所有线条。需要在上述任一语法中的所有参量之后指定名称 - 值参量。有关属性列表,请参阅 Line 属性。

  • p = plot (___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 p 修改该绘图的属性。有关属性列表,请参阅 Line 属性。


参见说明文档: plot

e.g.e.g. 常见用法举例:

  • 画单个图像
X=[1:9];
Y=[0.1:0.2:1.7];
plot(X,Y);

运行结果:

  • 画多个图像
t=0:0.01:2*pi;
t=t.';
x=[t,t,t];
y=[sin(t),sin(2*t),sin(0.5*t)];
plot(x,y);

运行结果:

或者

x1=linspace(0,2*pi,10);
x2=linspace(0,2*pi,100);
x3=linspace(0,2*pi,200);
y1=sin(x1);
y2=sin(x2);
y3=sin(x3);
plot(x1,y1,x2,y2+2,x3,y3+4);

运行结果:

  • 指定线形,标记,颜色:

更改 x1 图像线型为蓝色虚线

x1=linspace(0,2*pi,10);
x2=linspace(0,2*pi,100);
x3=linspace(0,2*pi,200);
y1=sin(x1);
y2=sin(x2);
y3=sin(x3);
plot(x1,y1,':b',x2,y2+2,x3,y3+4);

# fplot 函数

绘制表达式或函数,图线更平滑。

  • fplot (f) 在默认区间 [-5 5](对于 x)绘制由函数 y = f (x) 定义的曲线。

  • fplot (f,xinterval) 将在指定区间绘图。将区间指定为 [xmin xmax] 形式的二元素向量。

  • fplot (funx,funy) 在默认区间 [-5 5](对于 t)绘制由 x = funx (t) 和 y = funy (t) 定义的曲线。

  • fplot (funx,funy,tinterval) 将在指定区间绘图。将区间指定为 [tmin tmax] 形式的二元素向量。

  • fplot (___,LineSpec) 指定线型、标记符号和线条颜色。例如,'-r' 绘制一根红色线条。在上述语法中的任何输入参量组合后使用此选项。

  • fplot (___,Name,Value) 使用一个或多个名称 - 值对组参量指定线条属性。例如,'LineWidth',2 指定 2 磅的线宽。

  • fplot (ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。指定坐标区作为第一个输入参量。

  • fp = fplot (___) 返回 FunctionLine 对象或 ParameterizedFunctionLine 对象,具体情况取决于输入。使用 fp 查询和修改特定线条的属性。有关属性列表,请参阅 Fu nctionLine 属性 或 ParameterizedFunctionLine 属性。

  • [x,y] = fplot (___) 返回函数的纵坐标和横坐标,而不创建绘图。在以后的版本中将会删除该语法。请改用线条对象 fp 的 XData 和 YData 属性。


参见说明文档: fplot

e.g.e.g. 常见用法示例:

  • 绘制函数 y=sin1xy= sin{\frac{1}{x}} 在区间 [0,0.2][0 , 0.2] 的图像
fplot(@(x)sin(1/x),[0,0.2]);

运行结果:

对比 plot 函数画出来的图像。

x=0:0.005:2;
y=@(x)sin(1./x);
plot(x,y(x));

运行结果:

可以看出由于 fplot 函数 “知道” 用户要画的函数图像,因此作出来的图与 plot 函数相比更加精准,且使用起来更方便(例如不用指定自变量精度)。

  • 绘制参数方程图像,并指定线型
fplot(@(t)t.*sin(t),@(t)t.*cos(t),[0,10*pi],'-r');

运行结果:

# 其它坐标系的二维曲线:

# semilogx 函数

对数坐标图。

  • semilogx (X,Y) 在 x 轴上使用以 10 为底的对数刻度、在 y 轴上使用线性刻度来绘制 x 和 y 坐标。

    • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

    • 要在同一组坐标区上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

  • semilogx (X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

参见说明文档: semilogx

e.g.e.g.

x=logspace(-1,2);
y=x;

可以看到,我们在输入参数的时候用的是对数坐标,而绘图的时候还是以普通坐标系来作图的。

# polarplot 函数

极坐标图。

  • polarplot (theta,rho) 在极坐标中绘制线条,由 theta 表示弧度角,rho 表示每个点的半径值。输入必须为长度相等的向量或大小相等的矩阵。如果输入为矩阵,polarplot 将绘制 rho 的列对 theta 的列的图。也可以一个输入为向量,另一个为矩阵,但向量的长度必须与矩阵的一个维度相等。

示例

  • polarplot (theta,rho,LineSpec) 设置线条的线型、标记符号和颜色。

参见说明文档: polarplot

e.g.e.g.

theta=0:0.01:2*pi;
rho=sin(theta).*cos(theta);
polarplot(theta,rho);

运行结果:

# bar 函数

条形图。

  • bar (y) 创建一个条形图,y 中的每个元素对应一个条形。

    • 要绘制单个条形序列,请将 y 指定为长度为 m 的向量。这些条形沿 x 轴从 1 到 m 依次放置。

    • 要绘制多个条形序列,请将 y 指定为矩阵,每个序列对应一列。

  • bar (x,y) 在 x 指定的位置绘制条形。

参见说明文档: bar

e.g.e.g.

统计某个指标 2022 至 2024 三年间的数据,绘制条形图:

x = [2022:2024];
y = [10,20;20,30;100,200];
bar(x,y);

运行结果:

bar 函数不指定参数 X 则默认的 X 序列为从 1 开始的自然数。

# histogram 函数

直方图

  • histogram (X) 基于 X 创建直方图。histogram 函数使用 ** 自动分 bin 算法 **,然后返回均匀宽度的 bin,这些 bin 可涵盖 X 中的元素范围并显示分布的基本形状。histogram 将 bin 显示为矩形条,这样每个矩形的高度就表示 bin 中的元素数量。

  • histogram (X,nbins) 指定 bin 的数量。

参见说明文档: histogram

e.g.e.g.

对 1000 个随机数样本,绘制为一幅含有 25 个 bin 的直方图。

rng(2);
A=randn(1000);
nbin=25;
histogram(A,nbin);

运行结果:

# pie 函数

饼状图。

  • pie (X) 使用 X 中的数据绘制饼图。饼图的每个扇区代表 X 中的一个元素。

    • 如果 sum (X) ≤ 1,X 中的值直接指定饼图扇区的面积。如果 sum (X) < 1,pie 仅绘制部分饼图。

    • 如果 sum (X) > 1,则 pie 通过 X/sum (X) 对值进行归一化,以确定饼图的每个扇区的面积。

    • 如果 X 为 categorical 数据类型,则扇区对应于类别。每个扇区的面积是类别中的元素数除以 X 中的元素数的结果。

  • pie (X,explode) 将扇区从饼图偏移一定位置。explode 是一个由与 X 对应的零值和非零值组成的向量或矩阵。pie 函数仅将对应于 explode 中的非零元素的扇区偏移一定的位置。如果 X 为 categorical 数据类型,则 explode 可以是由对应于类别的零值和非零值组成的向量,或者是由要偏移的类别名称组成的元胞数组。

参见说明文档: pie

e.g.e.g.

x=1:2:9;
pie(x);

显然 sum (x)>1, 因此先对各元素归一化后再绘图。

运行结果:

# scatter 函数

散点图。

  • scatter (x,y) 在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。

    • 要绘制一组坐标,请将 x 和 y 指定为等长向量。

    • 要在同一组坐标区上绘制多组坐标,请将 x 或 y 中的至少一个指定为矩阵。

  • scatter (x,y,sz) 指定圆圈大小。要对所有圆使用相同的大小,请将 sz 指定为标量。要绘制不同大小的每个圆,请将 sz 指定为向量或矩阵。

  • scatter (x,y,sz,c) 指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将 c 指定为 "red" 来绘制所有红色圆。

  • scatter (___,"filled") 填充圆。可将 "filled" 选项与上述语法中的任何输入参量组合一起使用。

  • scatter (___,mkr) 指定标记类型。

参见说明文档: scatter

e.g.e.g.

t = 0:pi/50:2*pi;
X = 16*sin(t).^3;
y = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t)- cos(4*t);
scatter(x,y,'red', "filled")

运行结果:

我喜欢你

# quiver 函数

矢量图。

  • quiver (X,Y,U,V) 在由 X 和 Y 指定的笛卡尔坐标上绘制具有定向分量 U 和 V 的箭头。例如,第一个箭头源于点 X (1) 和 Y (1),按 U (1) 水平延伸,按 V (1) 垂直延伸。默认情况下,quiver 函数缩放箭头长度,使其不重叠。

  • quiver (U,V) 在等距点上绘制箭头,箭头的定向分量由 U 和 V 指定。

    • 如果 U 和 V 是向量,则箭头的 x 坐标范围是从 1 到 U 和 V 中的元素数,并且 y 坐标均为 1。

    • 如果 U 和 V 是矩阵,则箭头的 x 坐标范围是从 1 到 U 和 V 中的列数,箭头的 y 坐标范围是从 1 到 U 和 V 中的行数。

参见说明文档: quiver

e.g.e.g.

画一个由原点指向 (0,0) 的向量。

A=[4,5]
quiver(0,0,A(1),A(2));

运行结果:

# 图形属性的设置

# 线型、标记和颜色

指定包含符号的字符串标量或者字符向量。符号可以按任意顺序显示。例: “--or” 是带有圆形标记的红色虚线。

不需要同时指定所有三个特征。例如,如果忽略线型只指定标记,则绘图只显示标记不显示线条。

参见官方文档 LineSpec 参数

# 图形标注

函数名 作用 备注
title (图像标题) 图像标题,通过参数指定。 支持 LaTeX\LaTeX
xlabel (x 轴说明) x 轴说明,通过参数指定。 支持 LaTeX\LaTeX
ylabel (y 轴说明) y 轴说明,通过参数指定。 支持 LaTeX\LaTeX
text (x,y, 图形说明) 在(x,y) 点处添加说明 支持 LaTeX\LaTeX
legend (图例 1, 图例 2,……) 添加图例

# 坐标控制

# axis 函数

常见用法:

axis([xmin,xmax,ymin,ymax,zmin,zmax]); % 指定当前图像坐标区的范围

其他用法:

  • axis equal:横纵坐标值采取等长刻度
  • axis square:产生正方形坐标系(默认为矩形)
  • axis auto:使用默认设置
  • axis off:取消坐标轴
  • axis on:显示坐标轴

# grid 命令

给坐标系加网格和边框

  • grid on:显示网格线
  • grid off:不显示网格线

默认无网格线。

e.g.e.g.

绘制sin xsin\ xsin 2xsin\ {2x}sin x2sin\ \frac{x}{2} 的函数曲线并标注

x=linspace(0,2*pi,200);
y=[sin(x);sin(2*x);sin(x*0.5)];
plot(x,y);      % 绘图
axis([0,7,-1.5,1.5]);       % 选定坐标区间范围
legend('sin x','sin 2x','sin x/2');     % 图例
title("三个正弦函数y=sin{x}","FontSize",18);    % 标题
xlabel('x');    % x 轴标注
ylabel('y');    % y 轴标注
text(2.5,sin(2.5),'sin{x}');    % 在某点处标注
text(2.5*2,sin(2*2.5),'sin{2x}');% 在某点处标注

运行结果:

# 图形保持

# hold 命令

  • hold on:控制保持原有图形
  • hold off:控制刷新图形窗口
  • hold:在两种状态之间切换

e.g.e.g.

使用 hold 命令绘制一个同心圆

t = linspace(0,2*pi,200);
x=sin(t);
y=cos(t);
plot(x,y,'-b');
axis equal;
hold on;  % 保持当前作出的图像不会被后面的绘图命令覆盖。
x1=2*x;
y1=2*y;
plot(x1,y1,'-r');

运行结果:

更新于 阅读次数