原文出处:https://ww2.mathworks.cn/help/
plot
plot
函数具有不同的形式,具体取决于输入参数。
y
是向量,plot(y)
会生成 y
元素与 y
元素索引的分段线图。plot(x,y)
会生成 y
对 x
的图形。使用冒号运算符创建从 0
至 2π 的 x
值向量,计算这些值的正弦,并绘制结果。
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
添加轴标签和标题。xlabel
函数中的字符 \pi
用于创建符号 π。title
函数中的 FontSize
属性用于增大标题所用的文本大小。
xlabel('x = 0:2\pi')
ylabel('Sine of x')
title('Plot of the Sine Function','FontSize',12)
通过调用一次 plot
,多个 x-y
对组参数会创建多幅图形。MATLAB® 对每条线使用不同的颜色。
例如,下列语句绘制 x
的三个相关函数:
x = 0:pi/100:2*pi;
y = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend
函数提供了一种标识各条线的简单方法:
legend('sin(x)','sin(x-.25)','sin(x-.5)')
使用 plot
命令绘制数据时,可以指定颜色、线型和标记(例如加号或圆圈):
plot(x,y,'color_style_marker')
color_style_marker
包含一至四个字符(包括在单引号中),这些字符根据颜色、线型和标记类型构造而成。例如,
plot(x,y,'r:+')
使用红色点线绘制数据,并在每个数据点处放置一个 +
标记。
color_style_marker
由下列元素的组合形式构成。
类型 | 值 | 含义 |
---|---|---|
颜色 | 'c' 'm' 'y' 'r' 'g' 'b' 'w' 'k' |
青蓝 品红 黄 红 绿 蓝 白 黑 |
线型 | '-' '--' ':' '-.' 无字符 |
实线 虚线 点线 点划线 没有线条 |
标记类型 | '+' 'o' '*' 'x' 's' 'd' '^' 'v' '>' '<' 'p' 'h' 无字符 |
加号 空心圆 星号 字母 x 空心正方形 空心菱形 空心上三角 空心下三角 空心右三角 空心左三角 空心五角形 空心六角形 无标记 |
如果指定标记类型,但未指定线型,MATLAB® 仅使用标记创建图形,而不会创建线条。例如,
plot(x,y,'ks')
在每个数据点绘制黑色正方形,但不会使用线条连接标记。
语句
plot(x,y,'r:+')
绘制红色点线,并在每个数据点处放置加号标记。
此示例展示如何使用比绘制线条所用的数据点更少的数据点来绘制标记。它使用点线图和标记图(分别采用不同数目的数据点)绘制两次数据图:
x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),'r:',x2,sin(x2),'r+')
将多个复数值作为参数传递给 plot
时,MATLAB 会忽略虚部,但传递一个复数参数时除外。对于这一特殊情况,该命令是绘制虚部对实部的图的一种快捷方式。因此,
plot(Z)
其中 Z
是复数向量或矩阵,等效于
plot(real(Z),imag(Z))
下列语句将绘制一个具有 20 条边的多边形,并在各顶点处绘制一个小圆圈。
t = 0:pi/10:2*pi;
plot(exp(1i*t),'-o')
axis equal
axis equal
命令使 x 和 y 轴上的各刻度线增量的长度相同,这会使此绘图看起来更加圆润。
hold
命令用于将绘图添加到现有图形中。当键入
hold on
时,MATLAB 不会在您发出其他绘图命令时替换现有图形。MATLAB 而会将新图形与当前图形合并在一起。
例如,下列语句首先创建 peaks
函数的曲面图,然后叠加同一函数的等高线图:
[x,y,z] = peaks;
% 创建曲面图
surf(x,y,z)
% 去除边缘线条平滑的颜色
shading interp
% 保持当前图形
hold on
% 将等值线图添加到彩色图
contour3(x,y,z,20,'k')
% 返回默认值
hold off
如果尚未创建图窗窗口,绘图函数会自动打开一个新的图窗窗口。如果打开了多个图窗窗口,MATLAB 将使用指定为“当前图窗”(通常为上次使用的图窗)的图窗窗口。
要将现有图窗窗口设置为当前的图窗,请将指针放置在该窗口中并点击鼠标,或者也可以键入
figure(n)
其中 n
是图窗标题栏中的编号。
要打开新的图窗窗口并将其作为当前图窗,请键入
figure
如果某图窗已存在,大多数绘图命令会清除轴并使用此图窗创建新绘图。但是,这些命令不会重置图窗属性,例如,背景色或颜色图。如果已在以前的绘图中设置图窗属性,您可以先使用带有 reset
选项的 clf
命令。
clf reset
然后创建新绘图,以便将此图窗的属性恢复为其默认值。
subplot
命令用于在同一窗口中显示多个绘图,或者在同一张纸上打印这些绘图。键入以下命令
subplot(m,n,p)
会将图窗窗口划分为由多个小子图组成的 m
×n
矩阵,并选择第 p
个子图作为当前绘图。这些绘图沿图窗窗口的第一行进行编号,然后沿第二行进行编号,依此类推。例如,下列语句在图窗窗口的三个子区域中绘制数据:
x = 0:pi/20:2*pi;
subplot(3,1,1); plot(sin(x))
subplot(3,1,2); plot(cos(x))
subplot(3,1,3); plot(sin(x).*cos(x))
axis
命令提供了许多用于设置图形的比例、方向和纵横比的选项。
默认情况下,MATLAB 查找数据的最大值和最小值,并选择坐标轴范围来覆盖此范围。MATLAB 选择范围和轴刻度线值,以便生成可清楚地显示数据的图形。但是,您可以使用 axis
或 xlim
、ylim
与 zlim
函数来设置您自己的范围。
注意
更改某根轴的极限会导致其他极限也发生更改,以便更好地表示数据。要禁用自动极限设置,请输入 axis manual
命令。
axis
命令用于指定您自己的极限:
axis([xmin xmax ymin ymax])
或者对于三维图形,
axis([xmin xmax ymin ymax zmin zmax])
请使用命令
axis auto
重新启用自动极限选择。
axis
命令还可用于指定多种预定义模式。例如
axis square
使 x 轴和 y 轴的长度相同。
axis equal
使 x 轴和 y 轴上的各个刻度线增量的长度相同。这意味着
plot(exp(1i*(0:pi/10:2*pi)))
(后跟 axis square
或 axis equal
)会将椭圆形转变为正圆:
axis auto normal
将轴比例恢复为其默认的自动模式。
使用 axis
命令可以显示或隐藏轴。
axis on
显示轴。这是默认设置。
axis off
隐藏轴。
grid
命令启用和禁用网格线。语句
grid on
启用网格线,而
grid off
再次禁用网格线。
此示例展示如何创建图形并增强其显示:
axis
)xlabel
、ylabel
)title
)text
)使用 LaTeX 表示法生成数学符号。
如需关于在图形中放置箭头、方框和圆圈的信息,请参阅 annotation
函数。
通过从文件菜单中选择保存来保存图窗。这会将图窗写入到文件,包括属性数据、图窗菜单、uicontrol 和所有注释(即整个窗口)。如果这个图窗以前未被保存过,另存为对话框则会出现。此对话框提供用于将图窗另存为 .fig
文件或将其导出为图形格式的选项。
如果以前保存过这个图窗,再次使用保存会以“静默”方式保存图窗,而另存为对话框不会出现。
要使用标准图形格式(例如,TIFF 或 JPG)保存图窗以便用于其他应用程序,请从文件菜单中选择另存为(如果需要其他控件,则选择导出设置)。
注意
当指定保存图窗的格式时,下次保存该图窗或新图窗时,将再次使用该文件格式。如果您不希望按以前使用的格式保存,请使用另存为,并确保将保存类型下拉菜单设置为要写入的文件类型。
也可通过以下命令行进行保存:
savefig
函数将图窗及其包含的图形对象保存为 .fig
文件。saveas
命令,以各种格式保存图窗。您可以使用以下函数将图窗加载到 MATLAB:
openfig
函数加载保存为 .fig
文件的图窗。imread
函数将标准图形文件(包括保存图窗)读入到 MATLAB 中。通过从图窗文件菜单中选择生成代码,可以生成用于再建图窗及其所包含的图形的 MATLAB 代码。如果您已使用绘图工具创建图形,并且希望使用相同或不同数据创建类似图形,此选项尤其有用。
通过从图窗文件菜单中选择将工作区另存为,可以保存工作区中的变量。使用图窗文件菜单中的导入数据项可以重新加载保存的数据。MATLAB 支持多种数据文件格式,包括 MATLAB 数据文件,该数据文件的扩展名为 .mat
。
要创建二维线图,请使用 plot
函数。例如,绘制在从 0 到 2π 的值组成的线性间距向量上的正弦函数:
x = linspace(0,2*pi);
y = sin(x);
plot(x,y)
可以标记轴并添加标题。
xlabel("x")
ylabel("sin(x)")
title("Plot of the Sine Function")
通过向 plot
函数添加第三个输入参数,您可以使用红色虚线绘制相同的变量。
plot(x,y,"r--")
"r--"
为线条设定。每个设定可包含表示线条颜色、样式和标记的字符。标记是在绘制的每个数据点上显示的符号,例如,+
、o
或 *
。例如,g:*"
请求绘制使用 *
标记的绿色点线。
请注意,为第一幅绘图定义的标题和标签不再被用于当前的图窗窗口中。默认情况下,每次调用绘图函数、重置坐标区及其他元素以准备新绘图时,MATLAB® 都会清空图窗。
要将绘图添加到现有图窗中,请使用 hold on
。在使用 hold off
或关闭窗口之前,当前图窗窗口中会显示所有绘图。
x = linspace(0,2*pi);
y = sin(x);
plot(x,y)
hold on
y2 = cos(x);
plot(x,y2,":")
legend("sin","cos")
hold off
三维图通常显示一个由带两个变量的函数 z=f(x,y) 定义的曲面图。例如,对于给定的行向量和列向量 x
和 y
,每个向量包含 [-2,2] 范围内的 20 个点,计算 z=x**e−x2−y2 。
x = linspace(-2,2,20);
y = x';
z = x .* exp(-x.^2 - y.^2);
然后,创建曲面图。
surf(x,y,z)
surf
函数及其伴随函数 mesh
以三维形式显示曲面图。surf
使用颜色显示曲面图的连接线和面。mesh
生成仅以颜色标记连接线条的线框曲面图。
您可以使用 tiledlayout
或 subplot
在同一窗口的不同部分显示多个绘图。
tiledlayout
函数是在 R2019b 中引入的,该函数比 subplot
提供更多对标签和间距的控制。例如,在图窗窗口中创建 2×2 布局。然后,每当您要某个绘图出现在下一区域中时,请调用 nexttile
。
t = tiledlayout(2,2);
title(t,"Trigonometric Functions")
x = linspace(0,30);
nexttile
plot(x,sin(x))
title("Sine")
nexttile
plot(x,cos(x))
title("Cosine")
nexttile
plot(x,tan(x))
title("Tangent")
nexttile
plot(x,sec(x))
title("Secant")
直方图、饼图、文字云等
使用直方图、饼图或文字云等将数据分布可视化。例如,使用直方图将数据分组到各个 bin 中并显示每个 bin 中的元素数量。
函数
histogram |
直方图 |
---|---|
histogram2 |
二元直方图 |
morebins |
增加直方图的 bin 数量 |
fewerbins |
减少直方图 bin 数量 |
histcounts |
直方图 bin 计数 |
histcounts2 |
二元直方图 bin 计数 |
boxchart |
箱线图 |
swarmchart |
群散点图 |
swarmchart3 |
三维群散点图 |
bubblechart |
气泡图 |
---|---|
bubblechart3 |
三维气泡图 |
bubblelim |
将气泡大小映射到数据范围 |
bubblesize |
以磅为单位设置最小和最大气泡大小 |
bubblelegend |
为气泡图创建图例 |
scatter |
散点图 |
---|---|
scatter3 |
三维散点图 |
binscatter |
分 bin 散点图 |
scatterhistogram |
创建带直方图的散点图 |
spy |
可视化矩阵的稀疏模式 |
plotmatrix |
散点图矩阵 |
parallelplot |
创建平行坐标图 |
bubblecloud |
创建气泡云图 |
---|---|
wordcloud |
使用文本数据创建文字云图 |
pie |
饼图 |
pie3 |
三维饼图 |
heatmap |
创建热图 |
sortx |
对热图行中的元素进行排序 |
sorty |
对热图列中的元素进行排序 |
属性
Binscatter 属性 | bin 化散点图的外观和行为 |
---|---|
BoxChart 属性 | 控制箱线图的外观和行为 |
BubbleChart 属性 | 气泡图的外观和行为 |
BubbleCloud 属性 | 气泡云的外观和行为 |
BubbleLegend 属性 | 气泡图例的外观和行为 |
HeatmapChart 属性 | 热图的外观和行为 |
Histogram 属性 | 直方图的外观和行为 |
Histogram2 属性 | 二元直方图的外观和行为 |
Scatter 属性 | 散点图的外观和行为 |
ScatterHistogramChart 属性 | 控制散点直方图的外观和行为 |
ParallelCoordinatesPlot 属性 | 控制平行坐标图的外观和行为 |
WordCloudChart 属性 | 控制文字云图的外观和行为 |
主题
支持表的图
通过将表直接传递给绘图函数来创建绘图。
向饼图添加图例
此示例演示如何向饼图添加显示每个扇区说明的图例。
定义 x
并创建一个饼图。
x = [1,2,3];
figure
pie(x)
在元胞数组 labels
中指定每个饼图扇区的说明。按照您在 x
中指定数据的顺序指定说明。
labels = {'Product A','Product B','Product C'};
在饼图下方显示水平图例。将包含在 labels
中的说明传递给 legend
函数。将图例的 Location
属性设置为 'southoutside'
,并将其 Orientation
属性设置为 'horizontal'
。
legend(labels,'Location','southoutside','Orientation','horizontal')
偏移占比最大的饼图扇区
此示例演示如何创建饼图并自动偏移占比最大的饼图扇区。
为饼图添加文本和百分比标签
创建饼图时,MATLAB 会用各个扇区在整个饼图中所占的百分比来标记每个扇区。您可以更改标签以显示不同的文本。
使用二元直方图进行颜色分析
此示例说明如何调整二元直方图的色阶,以显示与 bin 有关的更多详细信息。
控制分类直方图的显示
此示例说明如何使用 histogram
有效查看分类数据。可以使用名称-值对组 'NumDisplayBins'
、'DisplayOrder'
和 'ShowOthers'
更改分类直方图的显示。这些选项有助于您更好地整理数据和减少绘图中的噪点。
基于表格数据创建热图
此示例说明如何根据表创建热图以及如何修改热图外观。
使用字符串数组创建文字云
此示例说明如何通过将纯文本读入字符串数组、进行预处理并传递给 wordcloud
函数,使用纯文本创建文字云。如果您安装了 Text Analytics Toolbox™,则可以直接使用字符串数组创建文字云。有关详细信息,请参阅 wordcloud
(Text Analytics Toolbox) (Text Analytics Toolbox)。
使用平行坐标图探索表数据
此示例显示如何从表创建平行坐标图,以及如何修改绘图的外观。
替换不建议使用的 hist 和 histc 实例
对于新代码,建议使用 histogram
、histcounts
和 discretize
作为直方图的创建和计算函数。
条形图、散点图等
使用条形图或针状图等将离散数据可视化。例如,可以创建垂直或水平条形图,其中条形长度与它们所代表的值成比例。
函数
bar |
条形图 |
---|---|
barh |
水平条形图 |
bar3 |
三维条形图 |
bar3h |
绘制水平三维条形图 |
pareto |
帕累托图 |
stem |
绘制离散序列数据 |
---|---|
stem3 |
绘制三维离散序列数据 |
scatter |
散点图 |
---|---|
scatter3 |
三维散点图 |
stairs |
阶梯图 |
---|---|
属性
Bar 属性 | 条形图的外观和行为 |
---|---|
Stem 属性 | 针状图的外观和行为 |
Scatter 属性 | 散点图的外观和行为 |
Stair 属性 | 阶梯图的外观和行为 |
条形图种类
如果需要查看一段时间内的结果、对比不同数据集的结果,或展示单个元素对汇总量的贡献和影响,则条形图会很有用处。
修改条形图的基线
此示例演示如何修改条形图基线的属性。
叠加条形图
此示例演示如何叠加两个条形图并指定条形的颜色和宽度。然后演示如何添加图例、显示网格线和指定刻度标签。
带有误差条的条形图
结合使用 bar
和 errorbar
函数创建带有误差条的条形图。
按高度为三维条形着色
此示例演示如何根据条形高度为条形着色,以此方式来修改三维条形图。
合并线图和针状图
此示例演示如何合并一个线图和两个针状图。然后,显示如何添加标题、坐标轴标签和图例。
叠加阶梯图和线图
此示例演示如何在阶梯图上叠加线图。
内插散点数据
使用 scatteredInterpolant
内插散点数据。
在地图上将数据可视化
使用地理图在交互式地图上可视化纬度和经度数据。通过指定坐标在地图上创建线图、散点图、点密度图和气泡图,并使用底图自定义地图影像。
函数
geoplot |
在地理坐标中绘制线条 |
---|---|
geoscatter |
地理坐标中的散点图 |
geobubble |
以可视方式呈现特定地理位置的数据值 |
geodensityplot |
地理密度图 |
geobasemap |
设置或查询底图 |
---|---|
geolimits |
设置或查询地理范围 |
geoaxes |
创建地理坐标区 |
geotickformat |
设置或查询地理刻度标签格式 |
addToolbarMapButton |
Add map button to toolbar |
removeToolbarMapButton |
Remove map button from toolbar |
属性
GeographicAxes 属性 | 控制地理坐标区的外观和行为 |
---|---|
GeographicBubbleChart 属性 | 控制地理气泡图的外观和行为 |
GeographicRuler 属性 | 用地理值控制轴的外观和行为 |
GeographicScalebar 属性 | 控制地理坐标区中比例尺的外观和行为 |
DensityPlot 属性 | 控制密度图的外观和行为 |
主题
geolimits
函数以编程方式更改地图坐标区或地理图中地图的纬度和经度范围。地理气泡图概述
通过在地图上绘制数据来提供数据的上下文。
在极坐标中绘图
函数
polarplot |
在极坐标中绘制线条 |
---|---|
polarscatter |
极坐标中的散点图 |
polarbubblechart |
极坐标气泡图 |
polarhistogram |
极坐标中的直方图 |
compass |
从原点发射出的箭头 |
ezpolar |
易用的极坐标绘图函数 |
rlim |
设置或查询极坐标区的 r 坐标轴范围 |
---|---|
thetalim |
设置或查询极坐标区的 theta 坐标轴范围 |
rticks |
设置或查询 r 轴刻度值 |
thetaticks |
设置或查询 theta 轴刻度值 |
rticklabels |
设置或查询 r 轴刻度标签 |
thetaticklabels |
设置或查询 theta 轴刻度标签 |
rtickformat |
指定 r 轴刻度标签格式 |
thetatickformat |
指定 theta 轴刻度标签格式 |
rtickangle |
旋转 r 轴刻度标签 |
polaraxes |
创建极坐标区 |
属性
PolarAxes 属性 | 极坐标区的外观和行为 |
---|---|
主题
在极坐标中绘图
以下示例演示如何在极坐标中创建线图、散点图和直方图。此外,还演示了如何对极坐标图添加注释和更改轴范围。
自定义极坐标区
为了便于查看图形,可以修改极坐标区的特定方面。例如,可以更改网格线位置和关联的标签。也可以更改网格线颜色和标签字体大小。
极坐标区上的罗盘标签
以下示例演示如何在极坐标中绘制数据图。此外,还演示如何指定要绘制网格线的角度以及如何指定标签。
二维和三维等值线图
函数
contour |
矩阵的等高线图 |
---|---|
contourf |
填充的二维等高线图 |
contourc |
低级等高线矩阵计算 |
contour3 |
三维等高线图 |
contourslice |
在三维体切片平面中绘制等高线 |
clabel |
为等高线图添加高程标签 |
fcontour |
绘制等高线 |
属性
Contour 属性 | 等高线图的外观和行为 |
---|---|
FunctionContour 属性 | 函数等高线图的外观和行为 |
主题
为等高线图添加层级标签
此示例如何用相关值标记等高线。
带有主网格线和次网格线的等高线图
您可以通过拆分数据并创建两个重叠的等高线图来创建突出所选等高线的等高线图。
改变等高线图的填充颜色
此示例演示如何更改已填充等高线图的颜色。
突出显示特定等高线层级
此示例演示如何突出显示特定层级的等高线。
箭头图、罗盘图、羽毛图和流线图
向量场可以对速度、磁力、流体运动和梯度进行建模。可以使用 quiver
、quiver3
和 streamline
函数在二维或三维视图中可视化向量场。也可以沿水平轴或相对原点显示向量。
函数
quiver |
箭头图或向量图 |
---|---|
quiver3 |
三维箭头图或向量图 |
compass |
从原点发射出的箭头 |
feather |
创建以 x 轴为起点的箭头 |
streamline |
基于二维或三维向量数据绘制流线图 |
---|---|
streamslice |
在切片平面中绘制流线图 |
属性
Quiver 属性 | 箭头图的外观和行为 |
---|---|
Line 属性 | 图形线条的外观和行为 |
主题
合并等高线图和箭头图
在同一绘图上显示等高线和梯度向量。
使用向量数据显示流线图
在同一绘图中使用流线图、切片平面和等高线以三维形式可视化气流。
创建流粒子动画
使用流线图可视化向量场内粒子的速度和方向。
网格曲面和三维体数据、非网格多边形数据
类别
动画图
函数
movie |
播放录制的影片帧 |
---|---|
getframe |
捕获坐标区或图窗作为影片帧 |
frame2im |
返回与影片帧关联的图像数据 |
im2frame |
将图像转换为影片帧 |
animatedline |
创建动画线条 |
---|---|
addpoints |
向动画线条中添加点 |
getpoints |
返回用来定义动画线条的点 |
clearpoints |
清除动画线条中的点 |
comet |
二维彗星图 |
comet3 |
三维彗星图 |
drawnow |
更新图窗并处理回调 |
---|---|
refreshdata |
刷新图数据 |
属性
AnimatedLine 属性 | 线条动画的外观和行为 |
---|---|
主题
动画技术
您可以使用三种基本方法在 MATLAB® 中创建动画。
沿线条跟踪标记
此示例演示如何通过更新标记属性以沿着线条跟踪标记。
线条动画
此示例演示如何创建由两条不断变长的线条组成的动画。animatedline
函数帮助您优化线条动画。它可以向线条添加新的点而不用重新定义现有点。
沿着线条移动一组对象
此示例演示如何使用变换沿着线条移动一组对象。
对图形对象进行动画处理
此示例演示如何通过更新三角形的数据属性实现三角形沿着圆形内部循环的动画效果。
创建流粒子动画
使用流线图可视化向量场内粒子的速度和方向。
录制动画用于播放
这些示例演示如何录制可播放的动画。
为曲面添加动画效果
基本方法在 MATLAB® 中创建动画。
沿线条跟踪标记
此示例演示如何通过更新标记属性以沿着线条跟踪标记。
线条动画
此示例演示如何创建由两条不断变长的线条组成的动画。animatedline
函数帮助您优化线条动画。它可以向线条添加新的点而不用重新定义现有点。
沿着线条移动一组对象
此示例演示如何使用变换沿着线条移动一组对象。
对图形对象进行动画处理
此示例演示如何通过更新三角形的数据属性实现三角形沿着圆形内部循环的动画效果。
创建流粒子动画
使用流线图可视化向量场内粒子的速度和方向。
录制动画用于播放
这些示例演示如何录制可播放的动画。
为曲面添加动画效果
此示例说明如何对曲面进行动画处理。具体而言,此示例是对球谐函数进行动画处理。球谐函数是傅里叶级数的球面版本,可用于构建地球自由振动的模型。