2026a

# plot


二维线图

函数库: TyPlot

# 语法

plot(X,Y)
plot(X,Y,fmt)
plot(X1,Y1,...,Xn,Yn)
plot(X1,Y1,fmt1,...,Xn,Yn,fmtn)
plot(Y)
plot(Y,fmt)
plot(___,Key=Value)
plot(ax,___)
h = plot(___)

# 说明

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

  • 如果 X 和 Y 都是向量,则它们的长度必须相同。plot 函数绘制 Y 对 X 的图;
  • 如果 X 和 Y 均为矩阵,则它们的大小必须相同。plot 函数绘制 Y 的列对 X 的列的图;
  • 如果 X 或 Y 中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等。如果矩阵的行数等于向量长度,则 plot 函数绘制矩阵中的每一列对向量的图; 如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图。
  • 如果 X 或 Y 之一为标量,而另一个为标量或向量,则 plot 函数会绘制离散点。但是,要查看这些点,您必须指定标记符号,例如 plot(X,Y,"o")。示例

plot(X,Y,fmt) 设置线型、标记符号和颜色。


plot(X1,Y1,...,Xn,Yn) 绘制多个X、Y对组的图,所有线条都使用相同的坐标区。示例


plot(X1,Y1,fmt1,...,Xn,Yn,fmtn) 设置每个线条的线型、标记符号和颜色。您可以混用 X、Y、fmt 三元组和 X、Y 对组:例如,plot(X1,Y1,X2,Y2,fmt2,X3,Y3)。示例


plot(Y) 创建 Y 中数据对每个值索引的二维线图。示例

  • 如果 Y 是向量,x 轴的刻度范围是从 1 至 length(Y);
  • 如果 Y 是矩阵,则 plot 函数绘制 Y 中各列对其行号的图。x 轴的刻度范围是从 1 到 Y 的行数;
  • 如果 Y 是复数,则 plot 函数绘制 Y 的虚部对 Y 的实部的图,使得 plot(Y) 等效于 plot(real(Y),imag(Y))。

plot(Y,fmt) 设置线型、标记符号和颜色。


plot(___,Key=Value) 使用一个或多个 Key=Value 对组参数指定线条属性。有关属性列表,请参见 line 属性。可以将此选项与前面语法中的任何输入参数组合一起使用。名称-值对组设置将应用于绘制的所有线条。示例


plot(ax,___) 将在由 ax 指定的坐标区中,而不是在当前坐标区(gca)中创建线条。选项 ax 可以位于前面的语法中的任何输入参数组合之前。示例


h=plot(___) 返回由图形线条对象组成的列向量。在创建特定的图形线条后,可以使用 h 修改其属性,请参见 line 属性示例

# 示例

创建线图

将 x 创建为由 0 和 2π 之间的线性间隔值组成的向量。在各值之间使用递增量 π/100。将 y 创建为 x 的正弦值。创建数据的线图。

using TyPlot
x = 0:pi/100:2*pi;
y = sin.(x);
plot(x,y)
绘制多个线条

将 x 定义为 100 个介于 −2π 和 2π 之间的线性间隔值。将 y1 和 y2 定义为 x 的正弦和余弦值。创建上述两个数据集的线图。

using TyPlot
x = LinRange(-2 * pi, 2 * pi, 100);
y1 = sin.(x);
y2 = cos.(x);

figure();
plot(x, y1, x, y2)
根据矩阵创建线图

将 Y 定义为 4×4 矩阵。创建 Y 的二维线图。将矩阵的每一列绘制为单独的线条。

using TyPlot
Y = [
    16 2 3 13
    5 11 10 8
    9 7 6 12
    4 14 15 1
]
figure();
plot(Y)
指定线型

绘制三条正弦曲线,每条曲线之间存在较小的相移。第一条曲线使用默认的线型。为第二条曲线指定虚线样式,第三条曲线指定点式线样式。

using TyPlot
x = 0:(pi / 100):(2 * pi);
y1 = sin.(x);
y2 = sin.(x .- 0.25);
y3 = sin.(x .- 0.5);

figure();
plot(x, y1, x, y2, "--", x, y3, ":")
指定线型、颜色和标记

绘制三条正弦曲线,每条曲线之间存在较小的相移。第一条正弦曲线使用绿色线条,不带标记。第二条正弦曲线使用蓝色虚线,带圆形标记。第三条正弦曲线只使用青蓝色星号标记。

using TyPlot
x = 0:(pi / 10):(2 * pi);
y1 = sin.(x);
y2 = sin.(x .- 0.25);
y3 = sin.(x .- 0.5);

figure();
plot(x, y1, "#00FF00", x, y2, "b--o", x, y3, "c*")
在特定的数据点显示标记

通过指定标记符号并将 markevery 属性设置为名称-值对组,创建一个线图并每隔四个数据点显示一个标记。

using TyPlot
x = LinRange(0, 10, 100);
y = sin.(x);
plot(x, y, "-o"; markevery=1:5:length(y))
指定线宽、标记大小和标记颜色

创建线图并使用 fmt 选项指定带正方形标记的绿色虚线。使用 Key=Value 对组来指定线宽、标记大小和标记颜色。将标记边颜色设置为蓝色,并使用 RGB 颜色值设置标记面颜色。

using TyPlot
x = (-pi):(pi / 10):pi;
y = tan.(sin.(x)) - sin.(tan.(x));
figure()
plot(
    x,
    y,
    "--gs";
    linewidth=2, 
    markersize=10,
    markeredgecolor="b",
    markerfacecolor=[0.5, 0.5, 0.5], 
)
添加标题和轴标签

使用 LinRange 函数将 x 定义为 0 到 10 之间 150 个值组成的向量。将 y 定义为 x 的余弦值。

using TyPlot
x = LinRange(0, 10, 150);
y = cos.(5 * x);

figure()
plot(x, y; color=[0, 0.7, 0.9])
title("2-D Line Plot")
xlabel("x")
ylabel("cos(5x)")
绘制持续时间并指定刻度格式

绘制持续时间并指定刻度格式。

using TyPlot
import Dates: Second, unix2datetime
t = range(Second(0), Second(180); step=Second(30))
t = [t...]
unix_t = unix2datetime(0)
dt = unix_t .+ t
y = [0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785]
y = [y...]

plot(dt, y);
指定线图的坐标区

调用 subplot 函数以创建一个 2×1 分块图布局和一个坐标区对象,并将该对象返回为 ax1。通过将 ax1 传递给 plot 函数来创建顶部绘图。通过将坐标区传递给 title 和 ylabel 函数,为图添加标题和 y 轴标签。重复该过程以创建底部绘图。

using TyPlot
x = LinRange(0, 3, 100);
y1 = sin.(5 * x);
y2 = sin.(15 * x);

ax1 = subplot(2, 1, 1)
ax2 = subplot(2, 1, 2)

# Top plot
plot(ax1, x, y1)
title(ax1, "Top Plot")
ylabel(ax1, "sin(5x)")

# Bottom plot
plot(ax2, x, y2)
title(ax2, "Bottom Plot")
ylabel(ax2, "sin(15x)")
创建并修改线条

将 x 定义为 100 个介于 −2π 和 2π 之间的线性间隔值。将 y1 和 y2 定义为 x 的正弦和余弦值。为上述两个数据集分别创建线图,并在 p 中返回两个图形线条。

using TyPlot
x = LinRange(-2 * pi, 2 * pi, 100);
y1 = sin.(x);
y2 = cos.(x);
p = plot(x, y1, x, y2);

将第一个线条的线宽更改为 2。向第二行添加星形标记。使用圆点表示法设置属性。

p[1].set_linewidth(2)
p[2].set_marker("*")
plt_update()
绘制圆形

绘制以点 (4,3) 为中心以 2 为半径的圆。使用 axis("equal") 可沿每个坐标方向使用相等的数据单位。

using TyPlot
r = 2;
xc = 4;
yc = 3;
theta = LinRange(0, 2 * pi, 100);
x = r * cos.(theta) .+ xc;
y = r * sin.(theta) .+ yc;
plot(x, y)
axis("equal")

# 输入参数

Y - y 值
标量 | 向量 | 矩阵

y值,指定为标量、向量或矩阵。要根据特定的 x 值绘图,还必须指定 X。

数据类型: Int16 | Int32 | Int64 | Float16 | Float32 | Float64

X - x 值
标量 | 向量 | 矩阵

x值,指定为标量、向量或矩阵。

数据类型: Int16 | Int32 | Int64 | Float16 | Float32 | Float64

fmt - 线型、颜色和标记

线型、颜色和标记,指定为包含符号的字符串。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、颜色和标记)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。

示例: "--ro" 是带有圆形标记的红色虚线

线型 说明 表示的线条
"-" 实线
"--" 虚线
":" 点线
"-." 点划线
"none" 无线条 无线条
标记 符号 说明
"." point
"," pixel
"o" circle
"v" triangle_down
"^" triangle_up
"<" triangle_left
">" triangle_right
"1" tri_down
"2" tri_up
"3" tri_left
"4" tri_right
"8" octagon
"s" square
"p" pentagon
"P" plus (filled)
"*" star
"h" hexagon1
"H" hexagon2
"+" plus
"x" x
"X" x (filled)
"D" diamond
"d" thin_diamond
"|" vline
"_" hline
"none" 无标记 none
ax - 目标坐标区
Axes 对象 | PolarAxes 对象

目标坐标区,指定为 Axes 对象、PolarAxes 对象。如果不指定坐标区或当前坐标区是笛卡尔坐标区,plot 函数将使用当前坐标区。要在极坐标区上绘图,请指定 PolarAxes 对象作为第一个输入参数,或者使用 polarplot 函数。

# 名称-值对组参数

指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。

示例: plot([1, 2, 3]; marker="o", markeredgecolor="r")

此处列出的图形线条属性只是一个子集。有关完整列表,请参见 line 属性

label - 图例
nothing(默认) | 字符串 | 数值

label 图例,默认 nothing,使用默认数据 data1 标记图形对象。如果设置了图例则以图例内容标记图形对象。

alpha - 透明度
1 (默认) | 范围 [0,1] 中的标量

透明度,指定为下列值之一:

范围 [0,1] 中的标量 - 在所有图形对象上使用统一的透明度。值为 1 时完全不透明,值为 0 时完全透明。介于 0 和 1 之间的值表示半透明。

示例: plot([1, 2, 3]; alpha=0.2)

color - 线条颜色
[0, 0.4470, 0.7410] (默认) | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b" | ...

线条颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4, 0.6, 0.7];
  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0 到 F。 这些值不区分大小写。因此,颜色代码 "#FF8800" 与 "#ff8800"、"#F80" 与 "#f80" 是等效的。
颜色名称 短名称 RGB 三元组 十六进制颜色代码 外观
"red" "r" [1, 0, 0] "#FF0000"
"green" 不适用 [0, 0.5019607843137255, 0] "#008000"
不适用 "g" [0, 0.5, 0] "#007F00"
不适用 不适用 [0, 1, 0] "#00FF00"
"blue" "b" [0, 0, 1] "#0000FF"
"cyan" 不适用 [0, 1, 1] "#00FFFF"
不适用 "c" [0, 0.75, 0.75] "#00BFBF"
"magenta" 不适用 [1, 0, 1] "#FF00FF"
不适用 "m" [0.75, 0, 0.75] "#BF00BF"
"yellow" 不适用 [1, 1, 0] "#FFFF00"
不适用 "y" [0.75, 0.75, 0] "#BFBF00"
"black" "k" [0, 0, 0] "#000000"
"white" "w" [1, 1, 1] "#FFFFFF"
"none" 不适用 不适用 不适用 无颜色

以下是 Syslab 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组 十六进制颜色代码 外观
[0, 0.4470, 0.7410] "#0072BD"
[0.8500, 0.3250, 0.0980] "#D95319"
[0.9290, 0.6940, 0.1250] "#EDB120"
[0.4940, 0.1840, 0.5560] "#7E2F8E"
[0.4660, 0.6740, 0.1880] "#77AC30"
[0.3010, 0.7450, 0.9330] "#4DBEEE"
[0.6350, 0.0780, 0.1840] "#A2142F"

示例: plot([1, 2, 3]; color="blue")

示例: plot([1, 2, 3]; color=[0, 1, 0])

示例: plot([1, 2, 3]; color="#0000FF")

linestyle - 线型
"-" (默认) | "--" | ":" | "-." | "none"

线型,指定为下表中列出的选项之一。

线型 说明 表示的线条
"-" 实线
"--" 虚线
":" 点线
"-." 点划线
"none" 无线条 无线条
linewidth - 线宽
1.5 (默认) | 正值

线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。

线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。

marker - 标记符号
"none" (默认) | "o" | "+" | "*" | "." | "x" | ...

标记符号,指定为下表中的标记之一。默认情况下,图形线条没有标记。通过指定标记符号沿该线条上的每个数据点添加标记。

marker symbol description
"." point
"," pixel
"o" circle
"v" triangle_down
"^" triangle_up
"<" triangle_left
">" triangle_right
"1" tri_down
"2" tri_up
"3" tri_left
"4" tri_right
"8" octagon
"s" square
"p" pentagon
"P" plus (filled)
"*" star
"h" hexagon1
"H" hexagon2
"+" plus
"x" x
"X" x (filled)
"D" diamond
"d" thin_diamond
"|" vline
"_" hline
"none" 无标记 none
markevery - 要显示标记的数据点的索引
nothing(默认) | 正整数向量 | 正整数标量

要显示标记的数据点的索引,指定为正整数向量。

  • markevery = nothing,每个点都绘制标记;
  • markevery = N,从标记 0 开始,每 N 个点绘制一个标记;
  • markevery = (start,N),从开始点开始(包括开始点),每 N 个点绘制一个标记;
  • markevery = start:N:end,从开始点开始(包括开始点),到结束点结束(不包括结束点),每 N 个点绘制一个标记;
  • markevery = [i, j, m, n],只绘制 i、j、m 和 n 处的标记;
  • markevery = [true, false, true],只绘制为 true 的位置的标记,标记数要与 true 和 false 的总数等价。

注意

要查看标记,还必须指定标记符号。

示例: plot(x, y, "-o"; markevery=[1, 5, 10]) 在第一、第五和第十个数据点处显示圆形标记。

示例: plot(x, y, "-x"; markevery=1:3:length(y)) 每三个数据点显示一个交叉标记。

示例: plot(x, y; marker="s", markevery=5) 每五个数据点显示一个正方形标记。

markeredgecolor - 标记轮廓颜色
"auto" (默认) | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b" |

标记轮廓颜色,指定为 "auto"、RGB 三元组、十六进制颜色代码、颜色名称或短名称。 默认值 "auto" 使用与 Color 属性相同的颜色。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4, 0.6, 0.7];
  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0 到 F。 这些值不区分大小写。因此,颜色代码 "#FF8800" 与 "#ff8800"、"#F80" 与 "#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称 短名称 RGB 三元组 十六进制颜色代码 外观
"red" "r" [1, 0, 0] "#FF0000"
"green" 不适用 [0, 0.5019607843137255, 0] "#008000"
不适用 "g" [0, 0.5, 0] "#007F00"
不适用 不适用 [0, 1, 0] "#00FF00"
"blue" "b" [0, 0, 1] "#0000FF"
"cyan" 不适用 [0, 1, 1] "#00FFFF"
不适用 "c" [0, 0.75, 0.75] "#00BFBF"
"magenta" 不适用 [1, 0, 1] "#FF00FF"
不适用 "m" [0.75, 0, 0.75] "#BF00BF"
"yellow" 不适用 [1, 1, 0] "#FFFF00"
不适用 "y" [0.75, 0.75, 0] "#BFBF00"
"black" "k" [0, 0, 0] "#000000"
"white" "w" [1, 1, 1] "#FFFFFF"
"none" 不适用 不适用 不适用 无颜色

以下是 Syslab 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组 十六进制颜色代码 外观
[0, 0.4470, 0.7410] "#0072BD"
[0.8500, 0.3250, 0.0980] "#D95319"
[0.9290, 0.6940, 0.1250] "#EDB120"
[0.4940, 0.1840, 0.5560] "#7E2F8E"
[0.4660, 0.6740, 0.1880] "#77AC30"
[0.3010, 0.7450, 0.9330] "#4DBEEE"
[0.6350, 0.0780, 0.1840] "#A2142F"
markerfacecolor - 标记填充颜色
"none" (默认) | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b" |

标记填充颜色,指定为 "auto"、RGB 三元组、十六进制颜色代码、颜色名称或短名称。默认值 "none" 表示没有填充颜色。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4, 0.6, 0.7];
  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0 到 F。 这些值不区分大小写。因此,颜色代码 "#FF8800" 与 "#ff8800"、"#F80" 与 "#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称 短名称 RGB 三元组 十六进制颜色代码 外观
"red" "r" [1, 0, 0] "#FF0000"
"green" 不适用 [0, 0.5019607843137255, 0] "#008000"
不适用 "g" [0, 0.5, 0] "#007F00"
不适用 不适用 [0, 1, 0] "#00FF00"
"blue" "b" [0, 0, 1] "#0000FF"
"cyan" 不适用 [0, 1, 1] "#00FFFF"
不适用 "c" [0, 0.75, 0.75] "#00BFBF"
"magenta" 不适用 [1, 0, 1] "#FF00FF"
不适用 "m" [0.75, 0, 0.75] "#BF00BF"
"yellow" 不适用 [1, 1, 0] "#FFFF00"
不适用 "y" [0.75, 0.75, 0] "#BFBF00"
"black" "k" [0, 0, 0] "#000000"
"white" "w" [1, 1, 1] "#FFFFFF"
"none" 不适用 不适用 不适用 无颜色

以下是 Syslab 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组 十六进制颜色代码 外观
[0, 0.4470, 0.7410] "#0072BD"
[0.8500, 0.3250, 0.0980] "#D95319"
[0.9290, 0.6940, 0.1250] "#EDB120"
[0.4940, 0.1840, 0.5560] "#7E2F8E"
[0.4660, 0.6740, 0.1880] "#77AC30"
[0.3010, 0.7450, 0.9330] "#4DBEEE"
[0.6350, 0.0780, 0.1840] "#A2142F"
markersize - 标记大小
6 (默认) | 正值

标记大小,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。

# 输出参数

h - 一个或多个图形线条对象
标量 | 向量

一个或多个图形线条对象,以标量或向量的形式返回。这些是唯一标识符,可以用来查询和修改特定图形线条的属性。有关属性列表,请参见 line 属性

示例: 使用 plt_get 函数获取线条属性:

  • plt_get(h,"linewidth") 获取图形线条对象的线宽;

  • plt_get(h,"color") 获取图形线条对象的颜色。

示例: 使用 plt_set 函数设置线条属性:

  • plt_set(h,"linewidth",3) 设置图形线条对象的线宽;

  • plt_set(h,"color","r") 设置图形线条对象的颜色。

# 另请参阅

# 函数

gca | hold | legend | loglog | plot3 | title | xlabel | xlim | ylabel | ylim

# 属性

line 属性