# loglog


双对数刻度图

函数库: TyPlot

# 语法

loglog(X,Y)
loglog(X,Y,fmt)
loglog(X1,Y1,...,Xn,Yn)
loglog(X1,Y1,fmt1,...,Xn,Yn,fmtn)
loglog(Y)
loglog(Y,fmt)
loglog(___;Key=Value)
loglog(ax,___)
lineobj = loglog(___)

# 说明

loglog(X,Y) 在 x 轴和 y 轴上应用对数刻度来绘制 x 和 y 坐标。

  • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量;
  • 要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。示例

loglog(X,Y,fmt) 使用指定的线型、颜色和标记创建绘图。示例


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


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


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

  • 如果 Y 是向量,则 x 坐标范围从 1 到 length(Y);
  • 如果 Y 是矩阵,则对于 Y 中的每个列,图中包含一个对应的行。x 坐标的范围是从 1 到 Y 的行数。

loglog(Y,fmt) 指定线型、颜色和标记。


loglog(___,Key=Value) 使用一个或多个 Key=Value 对组参数指定 line 属性。这些属性应用于绘制的所有线条。有关属性列表,请参见 line 属性。需要在上述任一语法中的所有参数之后指定 Key=Value 对组。示例


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


lineobj = loglog(___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 lineobj 修改该绘图的属性,请参见 line 属性示例

# 示例

绘制一个线条

将 x 定义为一个由区间 内的 100 个对数间距数组成的向量。将 y 定义为 。然后绘制 x 和 y,并调用 grid 函数显示网格线。

using TyPlot
using TyBase
x = logspace(-1, 2, 100);
y = 2 .^ x;
loglog(x, y)
grid("on", "both")
绘制多个线条

创建一个由 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给 loglog 绘制两个线条。

using TyPlot
using TyBase
x = logspace(-1, 2, 50);
y1 = 10 .^ x;
y2 = 1 ./ 10 .^ x;
loglog(x, y1, x, y2)
grid("on")
指定轴标签和刻度值

创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。

using TyPlot
using TyBase
x = logspace(-1, 2, 10000);
y = 5 .+ 3 * sin.(x);
loglog(x, y)

调用 yticks 函数,沿 y 轴以将 y 轴刻度值置于整数增量值位置。然后通过调用 xlabel 和 ylabel 函数创建 x 和 y 轴标签。

yticks([3, 4, 5, 6, 7])
xlabel("x")
ylabel("5 + 3 sin(x)")
将点绘制为不带线的标记

创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。将线型指定为 "s" 以显示不带连接线的方形标记。将标记填充颜色指定为 RGB 三元组 [0 0.447 0.741],它对应于深蓝色。

using TyPlot
using TyBase
x = logspace(-1, 2, 20);
y = 10 .^ x;
loglog(x, y, "s"; markerfacecolor=[0, 0.447, 0.741])
grid("on")
添加图例

创建两组 x 坐标和 y 坐标,并将其显示在一个双对数图中。通过调用 legend 函数并将位置指定为 "northwest",在绘图的左上角显示图例。

using TyPlot
using TyBase
x = logspace(-1, 2, 10000)
y1 = 5 .+ 3 * sin.(x / 4)
y2 = 5 .- 3 * sin.(x / 4)
loglog(x, y1, x, y2, "--")
legend(["Signal 1","Signal 2"], loc = "northwest")
仅指定 y 坐标

当您仅指定一个坐标向量时,loglog 会绘制这些坐标对值 1:length(y) 的图。例如,将 y 定义为一个由 0.001 和 100 之间的 6 个值组成的向量。创建 y 的双对数图。

using TyPlot
y = [0, 0.001, 0.01, 0.1, 1, 10, 100]
loglog(y)
grid("on","both")

如果您将 y 指定为矩阵,则绘制 y 的列对值 1:size(y,1) 的图。例如,将 y 定义为 5×3 矩阵,并将其传递给 loglog 函数。生成的图包含 3 个线条,其中每个线条的 x 坐标都是从 0 到 4。

y = [0.0010    0.0100    0.1000
    0.0100    0.1000    1.0000
    0.1000    1.0000   10.0000
    1.0000   10.5000  100.0000
    10.0000  100.0000 1000.0000];

loglog(y)
grid("on", "both")
指定目标坐标区

调用 subplot 函数以创建一个 2×1 分块图布局和一个坐标区对象,以便坐标区填充布局中的可用空间。接下来,将该对象返回为 ax1。通过将 ax1 传递给 loglog 函数来显示一个双对数图。

using TyPlot
using TyBase
ax1 = subplot(2, 1, 1)
x = logspace(-1, 2)
y1 = 10 .^ x;
loglog(ax1, x, y1)

重复该过程以创建第二个坐标区对象和第二个双对数图。

ax2 = subplot(2, 1, 2)
y2 = 1 ./ 10 .^ x;
loglog(ax2, x, y2)
绘图后更改线特性

创建一个包含两个线条的双对数图,并以变量 lg 形式返回行对象。

using TyPlot
using TyBase
x = logspace(-1, 2);
y1 = 10 .^ x;
y2 = 1 ./ 10 .^ x;
lg = loglog(x, y1, x, y2);

将第一个线条的宽度更改为 2,并将第二个线条的颜色更改为紫色。

lg[1].set_linewidth(2);
lg[2].set_color([0.4,0,1]);
plt_update()
在特定的数据点显示标记

将 x 定义为一个由区间 内的 50 个对数间距数组成的向量。将 y 定义为 。然后绘制 x 和 y,并将 markevery 属性设置为名称-值对组的形式,创建一个对数图并每隔四个数据点显示一个标记。

using TyPlot
using TyBase
x = logspace(-1, 2, 100);
y = 2 .^ x;
loglog(x, y, "-o"; markevery=1:5:length(y))

# 输入参数

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

x 坐标,指定为标量、向量或矩阵。X 的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。

绘图类型 如何指定坐标
单点 将 X 和 Y 指定为标量,并包含一个标记。例如:
loglog([1],[2],"o")
一组点 指定 X 和 Y 为相同长度的行向量或列向量的任意组合。例如:
loglog([1, 2, 3],[4; 5; 6])
多组点(使用向量) 指定连续的多对 X 和 Y 向量。例如:
loglog([1, 2, 3],[4, 5, 6],[1, 2, 3],[7, 8, 9])
多组点(使用矩阵) 如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵的行或列。该向量的长度必须与该矩阵的维度之一相匹配。例如:
loglog([1, 2, 3],[4; 5; 6])
如果矩阵是方阵,loglog 将为矩阵中的每列绘制一个线条。也可以指定 X 和 Y 为相同大小的矩阵。在本例中,loglog 绘制 Y 的每列对 X 的对应列的图。例如:
loglog([1 2 3; 4 5 6],[7 8 9; 10 11 12])

loglog 在某些情况下可能会排除坐标:

  • 如果坐标包括正值和负值,则仅显示正值;
  • 不显示零值。

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

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

y 坐标,指定为标量、向量或矩阵。Y 的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。

绘图类型 如何指定坐标
单点 将 X 和 Y 指定为标量,并包含一个标记。例如:
loglog([1],[2],"o")
一组点 指定 X 和 Y 为相同长度的行向量或列向量的任意组合。例如:
loglog([1, 2, 3],[4; 5; 6])
多组点(使用向量) 指定连续的多对 X 和 Y 向量。例如:
loglog([1, 2, 3],[4, 5, 6],[1, 2, 3],[7, 8, 9])
多组点(使用矩阵) 如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵的行或列。该向量的长度必须与该矩阵的维度之一相匹配。例如:
loglog([1, 2, 3],[4; 5; 6])。如果矩阵是方阵,loglog 将为矩阵中的每列绘制一个线条。也可以指定 X 和 Y 为相同大小的矩阵。在本例中,loglog 绘制 Y 的每列对 X 的对应列的图。例如:
loglog([1 2 3; 4 5 6],[7 8 9; 10 11 12])

loglog 在某些情况下可能会排除坐标:

  • 如果坐标包括正值和负值,则仅显示正值;
  • 不显示零值。

数据类型: 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 对象

目标坐标区,指定为 Axes 对象。如果不指定坐标区,且当前坐标区是笛卡尔坐标区,则 loglog 将使用当前坐标区。

# 名称-值对组参数

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

示例: loglog([1, 2],[3, 4],color="red") 为绘图指定一条红色线条。

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

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

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

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

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

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

示例: loglog([1, 2],[3, 4],alpha=0.2)

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

颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。您指定的颜色会设置线条颜色。当 markeredgecolor 属性设置为 "auto" 时,它还会设置标记边颜色。

对于自定义颜色,请指定 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"
linestyle - 线型
"-" (默认) | "--" | ":" | "-." | "none"

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

线型 说明 表示的线条
"-" 实线
"--" 虚线
":" 点线
"-." 点划线
"none" 无线条 无线条

示例: loglog([1, 2],[3, 4],linestyle=":")

linewidth - 线条宽度
0.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

示例: loglog([1, 2],[3, 4],marker="d")

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 的总数等价。

注意

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

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

示例: loglog(x, y, "-x", markevery=1:5:length(y)) 每五个数据点显示一个交叉标记。

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

markersize - 标记大小
6 (默认) | 正值

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

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"(默认)| "auto" | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b"|...

标记填充颜色,指定为 "auto"、RGB 三元组、十六进制颜色代码、颜色名称或短名称。"auto" 选项使用与父坐标区的 color 属性相同的颜色。如果您指定 "auto",并且坐标区图框不可见,则标记填充颜色为图窗的颜色。

对于自定义颜色,请指定 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"

# 输出参数

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

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

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

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

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

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

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

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

# 另请参阅

# 函数

plot | semilogx | semilogy

# 属性

line 属性