MATLAB 编程/绘图
plot 命令绘制 Y 中数据的二维线图与 X 中对应值的对比。
对于第一个 MATLAB 图表,我们将绘制经典的线性方程 y = mx +c
在 MATLAB 中,要进行绘图,我们需要遵循以下具体工作流程
(a) 指定要使用的 x 值的范围 (b) 指定带有 x 变量的 y 方程 (c) 绘制图形
对于示例,我们需要绘制方程 ,其中 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) 标题
我们可以使用 xlabel 和 ylabel 来标记坐标轴,示例如下。
对于自定义,我们使用以下约定
xlabel 或 ylabel(要显示的文本,属性名称 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);