Matlab绘图函数subplot、tiledlayout、plot和scatter及图例位置设置

一、绘图函数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删除背景网格线。

完结,撒花!!!

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值