• 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    效果为:

    在这里插入图片描述

    代码解释:
    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)
    
    • 1

    该命令是通过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')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    具体区别为legend([A1],'sin(x)','Location','SouthEast'),只需要将期望显示曲线的值,如A1或A2,放入中括号[]即可,效果如下所示。
    在这里插入图片描述

    四、matlab画图时,背景网格线添加与删除

    若希望生成的图片背景有网格线,只需在画图程序的最后添加命令grid on即可;
    若觉得背景网格线不美观,则使用命令grid off删除背景网格线。

    完结,撒花!!!

  • 相关阅读:
    关于分子力场中键能项和角能项的思考
    mysql的分组group by
    ke10javaweb停更
    麒麟v10安装Redis(ARM架构)
    锐捷MPLS跨域方案C1实验配置
    您需要 “企业内容管理“(ECM)还是 “文档管理系统”(DMS)?
    Percona监控数据库解决方案
    2023蓝海赛道小说推文和短剧推广的授权方式
    算法——双指针
    驱动开发day4
  • 原文地址:https://blog.csdn.net/Time_Memory_cici/article/details/133234985