semilogx
半对数图(x 轴有对数刻度)

语法
说明
向量和矩阵数据
semilogx(
绘制 Y
)Y
对一组隐式 x 坐标的图。
如果
Y
是向量,则 x 坐标范围从 1 到length(Y)
。如果
Y
是矩阵,则对于Y
中的每个列,图中包含一个对应的行。x 坐标的范围是从 1 到Y
的行数。
如果 Y
包含复数,semilogx
绘制 Y
的虚部对 Y
的实部的图。但是,如果您同时指定了 X
和 Y
,MATLAB® 会忽略虚部。
表数据
示例
绘制一个线条
将 x
定义为一个由从 0.1
到 100
的对数间距值组成的向量,将 y
定义为 x
的副本。创建 x
和 y
的线性对数图,并调用 grid
函数显示网格线。
x = logspace(-1,2);
y = x;
semilogx(x,y)
grid on
绘制多个线条
创建一个由对数间距 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给 semilogx
绘制两个线条。
x = logspace(-1,2);
y1 = x;
y2 = -x;
semilogx(x,y1,x,y2)
grid on
指定轴标签和刻度值
将 f
定义为一个包含从 10 Hz 到 100000 Hz 的频率的向量。将 gain
定义为以分贝为单位的功率增益值的向量。然后绘制增益值对频率的图。
f = logspace(1,5,100);
v = linspace(-50,50,100);
gain = (1-exp(5*(2.5*v.^2)./7500))/14;
semilogx(f,gain)
grid on
调用 yticks
函数,以将 y 轴刻度值重新定位于沿 y 轴的整数增量值位置。然后通过调用 xlabel
和 ylabel
函数创建 x 和 y 轴标签。
yticks([-5 -4 -3 -2 -1 0]) xlabel ('Frequency (Hz)') ylabel('Power Gain (dB)')
将点绘制为不带线的标记
创建一组 x 坐标和 y 坐标,并将其显示在线性对数图中。将线型指定为 'o'
以显示不带连接线的圆形标记。将标记填充颜色指定为 RGB 三元组 [0 0.447 0.741]
,它对应于深蓝色。
x = logspace(-1,2,15); y = 12 + x; semilogx(x,y,'o','MarkerFaceColor',[0 0.447 0.741]) grid on
添加图例
创建一个由对数间距 x 坐标组成的向量和两个由 y 坐标组成的向量。然后通过将以逗号分隔的 x-y 对组传递给 semilogx
绘制两个线条。通过调用 legend
函数显示图例。
x = logspace(1,4,100); v = linspace(-50,50,100); y1 = 100*exp(-1*((v+5).^2)./200); y2 = 100*exp(-1*(v.^2)./200); semilogx(x,y1,x,y2,'--') legend('Measured','Estimated') grid on
仅指定 y 坐标
当您仅指定一个坐标向量时,semilogx
会绘制这些坐标对值 1:length(y)
的图。例如,将 y
定义为一个由 0
和 40
之间的 5 个值组成的向量。创建 y 的线性对数图。
y = [0 10 20 30 40];
semilogx(y)
grid on
如果您将 y
指定为矩阵,则绘制 y 的列对值 1:size(y,1)
的图。例如,将 y
定义为 5×3 矩阵,并将其传递给 semilogx
函数。生成的图包含 3 个线条,其中每个线条的 x 坐标都是从 1
到 5
。
y = [ 0 10 20
10 20 30
20 30 40
30 40 50
40 50 60];
semilogx(y)
grid on
基于表绘制坐标
自 R2022a 开始
基于表数据绘图的一种便捷方法是将表传递给 semilogx
函数,并指定要绘制的变量。
创建一个包含两个变量的表。然后显示该表的前三行。
Input = logspace(-1,2)'; Output = 2*Input; tbl = table(Input,Output); head(tbl,3)
Input Output _______ _______ 0.1 0.2 0.11514 0.23028 0.13257 0.26514
在 x 轴上绘制 Input
变量,在 y 轴上绘制 Output
变量。以 p
形式返回 Line
对象,并打开坐标区网格。请注意,轴标签与变量名称匹配。
p = semilogx(tbl,"Input","Output"); grid on
要修改线条的各个方面,请对 Line
对象设置 LineStyle
、Color
和 Marker
属性。例如,将线条更改为具有点标记的红色点线。
p.LineStyle = ":"; p.Color = "red"; p.Marker = ".";
在一个轴上绘制多个表变量
自 R2022a 开始
创建包含三个变量的表。然后显示表中的前三行。
Input = logspace(-1,2)'; Output1 = 2*Input; Output2 = -Input; tbl = table(Input,Output1,Output2); head(tbl,3)
Input Output1 Output2 _______ _______ ________ 0.1 0.2 -0.1 0.11514 0.23028 -0.11514 0.13257 0.26514 -0.13257
在 x 轴上绘制 Input
变量,在 y 轴上绘制 Output1
和 Output2
变量。添加一个图例。请注意,图例标签与变量名称匹配。
semilogx(tbl,"Input",["Output1" "Output2"]) grid on legend
指定目标坐标区
创建一个采用 'flow'
图块排列方式的分块图布局,以便坐标区填充布局中的可用空间。接下来,调用 nexttile
函数创建一个坐标区对象,并返回它作为 ax1
。然后通过将 ax1
传递给 semilogx
函数来显示线性对数图。
tiledlayout('flow')
ax1 = nexttile;
x = logspace(-1,2);
y1 = 1./x;
semilogx(ax1,x,y1)
重复该过程以创建第二个线性对数图。
ax2 = nexttile; y2 = x; semilogx(ax2,x,y2)
绘制后更改线条外观
创建一个包含两个线条的线性对数图,并以变量 slg
形式返回线条对象。
x = logspace(-1,2); y1 = x; y2 = -x; slg = semilogx(x,y1,x,y2);
将第一个线条的宽度更改为 3
,并将第二个线条的颜色更改为紫色。
slg(1).LineWidth = 3; slg(2).Color = [0.4 0 1];
绘制不连续函数
在数据中任何不连续的位置插入 NaN
值。semilogx
函数显示这些位置的空缺。
创建一对 x 坐标向量和 y 坐标向量。用 NaN
值替换第四十个 y 坐标。然后创建一个 x
和 y
的线性对数图。
x = logspace(-1,2); y = x; y(40) = NaN; semilogx(x,y)
输入参数
X
— 对数刻度坐标
标量 | 向量 | 矩阵
对数刻度坐标,指定为标量、向量或矩阵。X
的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。
绘图类型 | 如何指定坐标 |
---|---|
单点 | 将 semilogx(1,2,'o') |
一组点 | 指定 semilogx([1 2 3],[4; 5; 6]) |
多组点 (使用向量) | 指定连续的多对 semilogx([1 2 3],[4 5 6],[1 2 3],[7 8 9]) |
多组点 (使用矩阵) | 如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵。该向量的长度必须与该矩阵的维度之一相匹配。例如: semilogx([1 2 3],[4 5 6; 7 8 9]) semilogx 将为矩阵中的每列绘制一个线条。 也可以指定 semilogx([1 2 3; 4 5 6],[7 8 9; 10 11 12]) |
semilogx
在某些情况下可能会排除坐标:
如果对数刻度坐标包括正值和负值,则仅显示正值。
如果对数刻度坐标均为负值,所有值都带适当的符号显示在对数刻度上。
不显示零的对数刻度值。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Y
— 线性刻度坐标
标量 | 向量 | 矩阵
线性刻度坐标,指定为标量、向量或矩阵。Y
的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。
绘图类型 | 如何指定坐标 |
---|---|
单点 | 将 semilogx(1,2,'o') |
一组点 | 指定 semilogx([1 2 3],[4; 5; 6]) |
多组点 (使用向量) | 指定连续的多对 semilogx([1 2 3],[4 5 6],[1 2 3],[7 8 9]) |
多组点 (使用矩阵) | 如果所有组共享相同的 x 或 y 坐标,请将共享坐标指定为一个向量,将其他坐标指定为一个矩阵。该向量的长度必须与该矩阵的维度之一相匹配。例如: semilogx([1 2 3],[4 5 6; 7 8 9]) semilogx 将为矩阵中的每列绘制一个线条。也可以指定 semilogx([1 2 3; 4 5 6],[7 8 9; 10 11 12]) |
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
LineSpec
— 线型、标记和颜色
字符串 | 字符向量
线型、标记和颜色,指定为包含符号的字符串或字符向量。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。
示例: "--or"
是带有圆形标记的红色虚线
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
标记 | 描述 | 生成的标记 |
---|---|---|
"o" | 圆圈 |
|
"+" | 加号 |
|
"*" | 星号 |
|
"." | 点 |
|
"x" | 叉号 |
|
"_" | 水平线条 |
|
"|" | 垂直线条 |
|
"square" | 方形 |
|
"diamond" | 菱形 |
|
"^" | 上三角 |
|
"v" | 下三角 |
|
">" | 右三角 |
|
"<" | 左三角 |
|
"pentagram" | 五角形 |
|
"hexagram" | 六角形 |
|
颜色名称 | 短名称 | RGB 三元组 | 外观 |
---|---|---|---|
"red" | "r" | [1 0 0] | |
"green" | "g" | [0 1 0] | |
"blue" | "b" | [0 0 1] | |
"cyan" | "c" | [0 1 1] | |
"magenta" | "m" | [1 0 1] | |
"yellow" | "y" | [1 1 0] | |
"black" | "k" | [0 0 0] | |
"white" | "w" | [1 1 1] | |
tbl
— 源表
表 | 时间表
包含要绘制的数据的源表,指定为表或时间表。
xvar
— 包含 x 坐标的表变量
字符向量 | 字符串数组 | 元胞数组 | 模式 | 数值标量或向量 | 逻辑向量 | vartype()
包含 x 坐标的表变量,使用下表中的索引方案之一指定。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
您指定的表变量可以包含任何数值。但是,semilogx
可能会从绘图中排除负值和零值,就像您将 X
指定为包含负值或零值的向量时一样。
如果 xvar
和 yvar
都指定多个变量,则变量的数目必须相同。
示例: semilogx(tbl,["x1","x2"],"y")
为 x 坐标指定名为 x1
和 x2
的表变量。
示例: semilogx(tbl,2,"y")
为 x 坐标指定第二个变量。
示例: semilogx(tbl,vartype("numeric"),"y")
为 x 坐标指定所有数值变量。
yvar
— 包含 y 坐标的表变量
字符向量 | 字符串数组 | 元胞数组 | 模式 | 数值标量或向量 | 逻辑向量 | vartype()
包含 y 坐标的表变量,使用下表中的索引方案之一指定。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
您指定的表变量可以包含数值、分类、日期时间或持续时间值。如果 xvar
和 yvar
都指定多个变量,则变量的数目必须相同。
示例: semilogx(tbl,"x",["y1","y2"])
为 y 坐标指定名为 y1
和 y2
的表变量。
示例: semilogx(tbl,"x",2)
为 y 坐标指定第二个变量。
示例: semilogx(tbl,"x",vartype("numeric"))
为 y 坐标指定所有数值变量。
ax
— 目标坐标区
Axes
对象
目标坐标区,指定为 Axes
对象。如果不指定坐标区,且当前坐标区是笛卡尔坐标区,则 semilogx
将使用当前坐标区。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: semilogx([1 2],[3 4],'Color','red')
为绘图指定一条红色线条。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 Line 属性。
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" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 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" |
LineWidth
— 线条宽度
0.5
(默认) | 正值
线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。
线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。
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" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 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" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 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" |
提示
semilogx
函数基于坐标区的ColorOrder
和LineStyleOrder
属性选用颜色和线型。semilogx
先对第一种线型依序使用每种颜色,直至用尽。然后,再对下一个线型依序使用每种颜色,以此类推。通过在坐标区中设置
ColorOrder
或LineStyleOrder
属性,可以在绘图后更改颜色和线型。您也可以调用colororder
函数来更改图窗中所有坐标区的色序。
算法
semilogx
函数通过将坐标区的 XScale
属性设置为 'log'
,以对数刻度绘制 x 坐标。但是,如果在调用 semilogx
之前坐标区的 hold
的状态为 'on'
,则属性不会更改,并且 x 坐标可能以线性刻度显示。
扩展功能
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
此函数在分布式数组上运行,但在客户端 MATLAB 中执行。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2022b: 用表创建的绘图将保留轴和图例标签中的特殊字符
当您将表和一个或多个变量名称传递给 semilogx
函数时,轴和图例标签现在会显示表变量名称中包含的任何特殊字符,如下划线。以前,特殊字符解释为 TeX 或 LaTeX 字符。
例如,如果将包含名为 Sample_Number
的变量的表传递给 semilogx
函数,则下划线会出现在轴和图例标签中。在 R2022a 及更早版本中,下划线解释为下标。
版本 | 表变量 "Sample_Number" 的标签 |
---|---|
R2022b |
|
R2022a |
|
要显示具有 TeX 或 LaTeX 格式的轴和图例标签,请手动指定标签。例如,在绘制后,使用所需的标签字符串调用 xlabel
或 legend
函数。
xlabel("Sample_Number") legend(["Sample_Number" "Another_Legend_Label"])
R2022a: 将表直接传递给 semilogx
通过将表传递给 semilogx
函数并后跟要绘制的变量来创建图。当您将数据指定为表时,会自动使用表变量名称对轴标签和图例(如果有)进行标注。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)