一、绘图函数subplot
subplot(m,n,p)
将当前图窗划分为 m×n
网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。
例如:subplot(3,2,1)
,指的就是一个包含三行两列六个图的第一个子图,如下图中的第一行第一列的子图:
好了,授人以鱼不如授人以渔,其实这些函数在matlab的帮助文档里都有详细说明,我在这里写也无非是copy过来,不如大家自己去官方文档查阅,如下如图所示:
二、matlab中一个特别重要的绘图例子
But,我这里还是举一个subplot的例子,以帮助我们更好的理解和使用该函数,matlab完整代码:
clear, close all,clc;
a1 = subplot( 1, 1, 1 );
hold( a1, 'on' );
x = linspace(0,10);
y1 = sin(x);
y2 = cos(x);
A1 = plot( a1, x, y1, 'linewidth', 5, 'color', [0.0000, 0.4470, 0.7410] );
A2 = plot( a1, x, y2, 'linewidth', 3, 'linestyle', '--', 'color', 'm' );
set( a1, 'xlim', [0, 10], 'fontsize', 25, 'xticklabel', {0:2:10} )
title( a1, 'X-Position', 'Fontsize', 30)
scatter( a1, 0, sin(0), 300, 'filled', 'linewidth', 3, 'markerfacecolor', 'y', 'markeredgecolor', 'k' );
scatter( a1, 10, sin(10), 300, 'filled', 'linewidth', 3, 'markerfacecolor', 'g', 'markeredgecolor', 'k' );
legend([A1,A2],'sin(x)','cos(x)','Location','SouthEast')
legend('boxoff')
效果为:
代码解释:
1、clear, close all,clc;
环境初始化三件套
2、a1 = subplot( 3, 2, 1 );
绘制一个包含三行两列六个图的第一个子图,并将该图命名为a1
3、hold( a1, 'on' );
可以在同一副图绘制多条曲线
4、x = linspace(0,10);
x的范围是0-10
5、第一条曲线是y1 = sin(x);
6、第二条曲线是y2 = cos(x);
7、plot( a1, x, y1, 'linewidth', 5, 'color', [0.0000, 0.4470, 0.7410] )
绘制第一条曲线,横坐标是x,纵坐标是y1,线宽linewidth
为5,曲线颜色为:[0.0000, 0.4470, 0.7410]
,注意这里是RGB三原色,可以自己定义,但matlab自带的颜色有八种,分别是:y:黄色;k:黑色;w:白色;b:蓝色;g:绿色;r:红色;c:亮青色;m:锰紫色
8、同理plot( a1, x, y2, 'linewidth', 3, 'linestyle', '--', 'color', 'm' )
绘制第二条曲线,横坐标是x,纵坐标是y2,线宽linewidth
为3,曲线风格为- - -
:曲线颜色为m
,也就是锰紫色。
9、set( a1, 'xlim', [0, 10], 'fontsize', 25, 'xticklabel', {0:2:10} )
是进行一些设置,xlim
限制x坐标的范围,为0-10,坐标轴字体大小为25,xticklabel
将x坐标轴的0-10,间隔为2分开。
xticklabel设置或查询 x 轴刻度标签。当xticklabels({}),表示通过将刻度标签指定为空数组来删除 x 轴的刻度标签,说白了就是x轴不显示数值了。
10、title( a1, 'X-Position', 'Fontsize', 30)
,设置图的名称为X-Position
,字体大小为30.
11、legend('sin(x)','cos(x)')
,设置图例,即图中曲线名称。'Location','SouthEast'
设置图例位置在右下角,其他图例位置总结见下文总结。legend('boxoff')
隐藏图例的边界框,这样好看一些。
12、 scatter散点图,作用通常为突出起点和终点,scatter(x,y)
在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。属性"filled"
表示填充圆,属性"linewidth"
表示线宽为3,属性"markerfacecolor"
表示填充圆的颜色,属性"markeredgecolor"
表示圆边缘的颜色。
over,分析结束。
二、绘图函数tiledlayout
自 R2019b起,matlab官方推荐使用tiledlayout绘图,以替换subplot函数,因为它使您能够创建具有可调图块间距、根据图窗大小重排的图块以及放置更合理的颜色栏和图例的布局。 同理,关于tiledlayout绘图大家可以按需去帮助文档查阅
三、图例位置设置、图例字体大小设置
添加图例后,如何没有特殊说明,默认在右上角位置。但我们可以通过Location设置图例位置,具体命令为
legend('sin(x)','cos(x)','Location','SouthEast','FontSize',15)
该命令是通过Location参数将图例设置为东南方向,也就是右下角
1、图例位置大全
Location参数 | 参数解释 |
---|---|
North | 上部中间 (上北) |
South | 底部中间(下南) |
West | 左边中间 (左西) |
East | 右边中间 (右东) |
NorthEast | 右上 |
NorthWest | 左上 |
SouthEast | 右下 |
SouthWest | 左下 |
NorthOutside | 图外上部中间(太难看,基本用不到) |
SouthOutside | 图外底部中间(太难看,基本用不到) |
WestOutside | 图外左边中间(太难看,基本用不到) |
EastOutside | 图外右边中间(太难看,基本用不到) |
NorthEastOutside | 图外右上(太难看,基本用不到) |
NorthWestOutside | 图外左上(太难看,基本用不到) |
SouthEastOutside | 图外右下(太难看,基本用不到) |
SouthWestOutside | 图外左下(太难看,基本用不到) |
Best | 与图中数据冲突最小的图例位置(大拇指) |
BestOutside | 图外闲置空间最少的图例位置 |
2、图例字体大小
通过FontSize参数设置图例字体大小,后面跟的数字不要带引号
3、图中多条曲线,图例仅显示我们期望的几条曲线
这里需要注意的一点是,需要先给plot函数赋个值,具体例子如下所示:
clear, close all,clc;
a1 = subplot( 1, 1, 1 );
hold( a1, 'on' );
x = linspace(0,10);
y1 = sin(x);
y2 = cos(x);
A1 = plot( a1, x, y1, 'linewidth', 5, 'color', [0.0000, 0.4470, 0.7410] );
A2 = plot( a1, x, y2, 'linewidth', 3, 'linestyle', '--', 'color', 'm' );
set( a1, 'xlim', [0, 10], 'fontsize', 25, 'xticklabel', {0:2:10} )
title( a1, 'X-Position', 'Fontsize', 30)
scatter( a1, 0, sin(0), 300, 'filled', 'linewidth', 3, 'markerfacecolor', 'y', 'markeredgecolor', 'k' );
scatter( a1, 10, sin(10), 300, 'filled', 'linewidth', 3, 'markerfacecolor', 'g', 'markeredgecolor', 'k' );
legend([A1],'sin(x)','Location','SouthEast')
legend('boxoff')
具体区别为legend([A1],'sin(x)','Location','SouthEast')
,只需要将期望显示曲线的值,如A1或A2,放入中括号[]即可,效果如下所示。
四、matlab画图时,背景网格线添加与删除
若希望生成的图片背景有网格线,只需在画图程序的最后添加命令grid on
即可;
若觉得背景网格线不美观,则使用命令grid off
删除背景网格线。
完结,撒花!!!