跳转到内容

MATLAB 编程/绘图

来自维基教科书,开放的书籍,开放的世界


plot 命令绘制 Y 中数据的二维线图与 X 中对应值的对比。

绘制线性线

[编辑 | 编辑源代码]

对于第一个 MATLAB 图表,我们将绘制经典的线性方程 y = mx +c

在 MATLAB 中,要进行绘图,我们需要遵循以下具体工作流程

(a) 指定要使用的 x 值的范围 (b) 指定带有 x 变量的 y 方程 (c) 绘制图形

无增强功能的 MATLAB 图表

对于示例,我们需要绘制方程 ,其中 x 的范围为 0 到 30

在 MATLAB 中,我们输入以下内容

x = 0:30; %declare x = 0 to 30
y=(5*x) +8 ; % declare equation
plot(x,y) %plot the line chart

我们可以得到如下所示的简单折线图 

正如你在左边看到的,我们可以得到线性线的图表图。
恭喜,你已经绘制了 MATLAB 中的第一个图表。

这是如何在 MATLAB 中绘制图表的 基本思路。

在下一节中,我们将使用相同的图表来美化图表,使其更具个性化/独特

增强图表

[编辑 | 编辑源代码]

以下是一些增强图表的方法(使图表更易于理解/更具吸引力,方便读者理解)

请注意,所有图表增强功能都需要在 plot 命令之后/下方定义,并且一些属性需要在绘图函数中定义。

以下是一些可以用来增强图表图的属性,分别是

(a) 坐标轴标签

(b) 网格

(c) 图例

(d) 标记

(d) 标题

坐标轴标签

[编辑 | 编辑源代码]

我们可以使用 xlabelylabel 来标记坐标轴,示例如下。

对于自定义,我们使用以下约定

xlabelylabel(要显示的文本,属性名称 1,属性值名称 1,...,属性名称 n,属性值名称 n)

如下所示,我们可以使用多个属性来自定义坐标轴标签。

xlabel('Population of dogs','Color','b','FontWeight','bold','FontAngle','italic') 
% x label to display "Population of dogs" with blue colour fonts, bold and italic

ylabel({'Weeks','for year 2022'},'FontSize',15,'FontName','Times New Roman') 
% y label to display 2 lines of "Weeks for year of 2022" with font size 15 and using font 'Times New Roman'
我们可以看到网格线和次网格线

如上所示的原始图表,很难看出某些线图是与右侧坐标轴相关的。

我们可以使用网格来追踪某个 x 值与哪个 y 值相关。

我们可以使用 grid 函数,并使用以下 MATLAB 命令

grid on 
%turn on grid

grid minor 
% turn on the minor gridlines / subset of the major gridlines

还有一个属性是网格次要,它将绘制更小的网格刻度,即 grid minor

要使用网格次要,你需要先通过键入 grid on 来打开网格。

我们可以看到图形东北部的图表图例

我们可以使用以下命令在图表图中添加图例:legend

例如,以下示例需要将绘图线标记如下

legend('y=(5*x) +8','Location','northeast')

我们可以看到图例显示在 东北 位置,这是图形的默认位置

我们可以通过在位置中添加关键字 outside 来定义图例在图表区域内或图表区域外的具体位置



我们可以看到菱形的标记

你可以在 plot 命令内的图表图中添加标记。

plot(x,y,marker_commands)

例如,假设我们想要使用菱形标记,因此我们输入以下命令

plot(x,y,'-d') %the line - indicate the line to connect the diamond shapes

我们将得到一个带有菱形标记的图表。


以下标记命令可以用于绘图,如下所示 

标记命令 标记形状
'o' 圆圈符号
'+' 加号
'*' 星号
'.'
'd' 菱形
'h' 六角星(六芒星)
's' 正方形
'p' 五角星(五芒星)
'x' 十字
'^' 向上箭头三角形
'v' 向下箭头三角形
'<' 向左箭头三角形
'>' 向右箭头三角形
我们可以看到图表顶部的绿色标题

我们可以通过添加 title 命令来添加图表图的标题

与上面的坐标轴标签相同,title 命令遵循相同的约定

title(要显示的文本,属性名称 1,属性值名称 1,...,属性名称 n,属性值名称 n)

如下所示,我们可以自定义标题

title({'Populations of dogs in 2022 ','by weeks'}, 'Color','g','FontSize',14,'FontName','Lucida Console')
%display the title in two lines with green text , font size of 14 and with font Lucida COnsole


其他示例

[编辑 | 编辑源代码]

在本例中,我们将绘制一个简单的圆圈。

angles = linspace(0, 2*pi);
radius = 20; % radius of circle is 20
CenterX = 50; %coordinate of circle center point at x axis is 50 
CenterY = 50; %coordinate of circle center point at y axis is 50
x = radius * cos(angles) + CenterX;
y = radius * sin(angles) + CenterY;
plot(x, y, 'b-', 'LineWidth', 2);
title("Circle")
hold on;
plot(CenterX, CenterY, 'k+', 'LineWidth', 3, 'MarkerSize', 14);
grid on;
axis equal;


在本例中,以下代码将创建一个图形,用于比较两种算法在处理器数量增加时的 加速比

生成的图形如下所示。

  >> x = [1 2 4 8];
  >> y = [1 2 1.95 3.79];
  >> z = [1 1.73 2.02 3.84]; 
  >> h = plot(x,y,'--');
  >> hold on; % Plot next graph on same figure
  >> plot(x,z);
  >> hold off;
  >> xlabel('Number of processors');
  >> ylabel('Speedup');
  >> saveas(h,'graph.eps',eps);
[编辑 | 编辑源代码]

ControlTheoryPro.com 上的 MATLAB 类别

法语的 Matlab 教程

MATLAB 绘图线样式

如何使用简单函数和代码绘制 MATLAB 图形?

MATLAB 自定义图例

华夏公益教科书