• MATLAB中tiledlayout函数使用


    目录

    语法

    说明

    示例

    创建 2×2 布局

    指定流式图块排列

    调整布局间距 

     创建共享标题和轴标签

    在面板中创建布局 

    对坐标区设置属性 

    创建占据多行和多列的坐标区 

    从特定编号的图块开始放置坐标区对象

    显示极坐标图和地理图

    重新配置上一个图块中的内容

    重新配置跨图块坐标区

    替换上一个图块中的内容 

    在单独图块中显示共享颜色栏 

    手动创建和配置坐标区 


            tiledlayout函数的功能是创建分块图布局。

    语法

    1. tiledlayout(m,n)
    2. tiledlayout('flow')
    3. tiledlayout(___,Name,Value)
    4. tiledlayout(parent,___)
    5. t = tiledlayout(___)

    说明

            tiledlayout(m,n) 创建分块图布局,用于显示当前图窗中的多个绘图。该布局有固定的 m×n 图块排列,最多可显示 m*n 个绘图。如果没有图窗,MATLAB® 会创建一个图窗并将布局放入其中。如果当前图窗包含一个现有坐标区或布局,MATLAB 会将其替换为新布局。

    分块图布局包含覆盖整个图窗或父容器的不可见图块网格。每个图块可以包含一个用于显示绘图的坐标区。创建布局后,调用 nexttile 函数以将坐标区对象放置到布局中。然后调用绘图函数在该坐标区中绘图。

            tiledlayout('flow') 指定布局的 'flow' 图块排列。最初,只有一个空图块填充整个布局。当您调用 nexttile 时,布局都会根据需要进行调整以适应新坐标区,同时保持所有图块的纵横比约为 4:3。

            tiledlayout(___,Name,Value) 使用一个或多个名称-值对组参数指定布局的其他选项。请在所有其他输入参数之后指定这些选项。例如,tiledlayout(2,2,'TileSpacing','compact') 创建一个 2×2 布局,图块之间采用最小间距。有关属性列表,请参阅 TiledChartLayout 属性。

            tiledlayout(parent,___) 在指定的父容器中而不是在当前图窗中创建布局。请在所有其他输入参数之前指定父容器。

            t = tiledlayout(___) 返回 TiledChartLayout 对象。创建布局后,使用 t 配置布局的属性。

    示例

    创建 2×2 布局

            创建一个 2×2 分块图布局,并调用 peaks 函数以获取预定义曲面的坐标。通过调用 nexttile 函数,在第一个图块中创建一个坐标区对象。然后调用 surf 函数以在坐标区中绘图。对其他三个图块使用不同绘图函数重复该过程。

    1. tiledlayout(2,2);
    2. [X,Y,Z] = peaks(20);
    3. % Tile 1
    4. nexttile
    5. surf(X,Y,Z)
    6. % Tile 2
    7. nexttile
    8. contour(X,Y,Z)
    9. % Tile 3
    10. nexttile
    11. imagesc(Z)
    12. % Tile 4
    13. nexttile
    14. plot3(X,Y,Z)

            如图所示:

    指定流式图块排列

            创建四个坐标向量:x、y1、y2 和 y3。用 'flow' 参数调用 tiledlayout 函数,以创建可容纳任意数量的坐标区的分块图布局。调用 nexttile 函数以创建第一个坐标区。然后在第一个图块中绘制 y1。第一个图填充整个布局。

    1. x = linspace(0,30);
    2. y1 = sin(x/2);
    3. y2 = sin(x/3);
    4. y3 = sin(x/4);
    5. % Plot into first tile three times
    6. tiledlayout('flow')
    7. nexttile
    8. plot(x,y1)

            如图所示:

            创建第二个图块和坐标区,并绘制到坐标区中。 

    1. nexttile
    2. plot(x,y2)

            如图所示:

            重复该过程以创建第三个绘图。

    1. nexttile
    2. plot(x,y3)

            如图所示:

            重复该过程以创建第四个绘图。这次,通过在绘制 y1 后调用 hold on 在同一坐标区中绘制全部三条线。 

    1. nexttile
    2. plot(x,y1)
    3. hold on
    4. plot(x,y2)
    5. plot(x,y3)
    6. hold off

            如图所示:

    调整布局间距 

            创建五个坐标向量:x、y1、y2、y3 和 y4。然后调用 tiledlayout 函数来创建 2×2 布局,并指定返回参数来存储 TileChartLayout 对象。在调用 plot 函数之前,调用 nexttile 函数以在下一个空图块中创建坐标区对象。 

    1. x = linspace(0,30);
    2. y1 = sin(x);
    3. y2 = sin(x/2);
    4. y3 = sin(x/3);
    5. y4 = sin(x/4);
    6. t = tiledlayout(2,2);
    7. % Tile 1
    8. nexttile
    9. plot(x,y1)
    10. % Tile 2
    11. nexttile
    12. plot(x,y2)
    13. % Tile 3
    14. nexttile
    15. plot(x,y3)
    16. % Tile 4
    17. nexttile
    18. plot(x,y4)

            如图所示:

            通过将 TileSpacing 属性设置为 'compact' 来减小图块的间距。然后通过将 Padding 属性设置为 'compact',减小布局边缘和图窗边缘之间的空间。 

    1. t.TileSpacing = 'compact';
    2. t.Padding = 'compact';

            如图所示:

     创建共享标题和轴标签

            创建一个 2×2 分块图布局 t。指定 TileSpacing 名称-值对组参数,以最小化图块之间的空间。然后在每个图块中创建一个带标题的绘图。

    1. t = tiledlayout(2,2,'TileSpacing','Compact');
    2. % Tile 1
    3. nexttile
    4. plot(rand(1,20))
    5. title('Sample 1')
    6. % Tile 2
    7. nexttile
    8. plot(rand(1,20))
    9. title('Sample 2')
    10. % Tile 3
    11. nexttile
    12. plot(rand(1,20))
    13. title('Sample 3')
    14. % Tile 4
    15. nexttile
    16. plot(rand(1,20))
    17. title('Sample 4')

            如图所示:

            通过将 t 传递给 title、xlabel 和 ylabel 函数,显示共享标题和轴标签。 

    1. title(t,'Size vs. Distance')
    2. xlabel(t,'Distance (mm)')
    3. ylabel(t,'Size (mm)')

            如图所示:

    在面板中创建布局 

            在图窗中创建一个面板。然后通过将面板对象指定为 tiledlayout 函数的第一个参数,在面板中创建一个分块图布局。在每个图块中显示一个绘图。

    1. p = uipanel('Position',[.1 .2 .8 .6]);
    2. t = tiledlayout(p,2,1);
    3. % Tile 1
    4. nexttile(t)
    5. stem(1:13)
    6. % Tile 2
    7. nexttile(t)
    8. bar([10 22 31 43 52])

            如图所示:

    对坐标区设置属性 

            调用 tiledlayout 函数以创建 2×1 分块图布局。带一个输出参数调用 nexttile 函数以存储坐标区。然后绘制到坐标区中,并将 x 和 y 轴的颜色设置为红色。在第二个图块中重复该过程。

    1. t = tiledlayout(2,1);
    2. % First tile
    3. ax1 = nexttile;
    4. plot([1 2 3 4 5],[11 6 10 4 18]);
    5. ax1.XColor = [1 0 0];
    6. ax1.YColor = [1 0 0];
    7. % Second tile
    8. ax2 = nexttile;
    9. plot([1 2 3 4 5],[5 1 12 9 2],'o');
    10. ax2.XColor = [1 0 0];
    11. ax2.YColor = [1 0 0];

            如图所示:

    创建占据多行和多列的坐标区 

            将 scores 和 strikes 定义为包含四场保龄球联赛数据的向量。然后创建一个分块图布局,并显示三个图块,分别显示每个团队的击球数量。

    1. scores = [444 460 380
    2. 387 366 500
    3. 365 451 611
    4. 548 412 452];
    5. strikes = [9 6 5
    6. 6 4 8
    7. 4 7 16
    8. 10 9 8];
    9. t = tiledlayout('flow');
    10. % Team 1
    11. nexttile
    12. plot([1 2 3 4],strikes(:,1),'-o')
    13. title('Team 1 Strikes')
    14. % Team 2
    15. nexttile
    16. plot([1 2 3 4],strikes(:,2),'-o')
    17. title('Team 2 Strikes')
    18. % Team 3
    19. nexttile
    20. plot([1 2 3 4],strikes(:,3),'-o')
    21. title('Team 3 Strikes')

            如图所示:

            调用 nexttile 函数以创建占据两行三列的坐标区对象。然后在此坐标区中显示一个带图例的条形图,并配置轴刻度值和标签。调用 title 函数以向布局中添加一个图块。 

    1. nexttile([2 3]);
    2. bar([1 2 3 4],scores)
    3. legend('Team 1','Team 2','Team 3','Location','northwest')
    4. % Configure ticks and axis labels
    5. xticks([1 2 3 4])
    6. xlabel('Game')
    7. ylabel('Score')
    8. % Add layout title
    9. title(t,'April Bowling League Data')

            如图所示:

    从特定编号的图块开始放置坐标区对象

            要从特定位置开始放置坐标区对象,请指定图块编号和跨度值。将 scores 和 strikes 定义为包含四场保龄球联赛数据的向量。然后创建一个 3×3 分块图布局,并显示五个条形图,其中显示每个团队的击球次数。

    1. scores = [444 460 380 388 389
    2. 387 366 500 467 460
    3. 365 451 611 426 495
    4. 548 412 452 471 402];
    5. strikes = [9 6 5 7 5
    6. 6 4 8 10 7
    7. 4 7 16 9 9
    8. 10 9 8 8 9];
    9. t = tiledlayout(3,3);
    10. % Team 1
    11. nexttile
    12. bar([1 2 3 4],strikes(:,1))
    13. title('Team 1 Strikes')
    14. % Team 2
    15. nexttile
    16. bar([1 2 3 4],strikes(:,2))
    17. title('Team 2 Strikes')
    18. % Team 3
    19. nexttile
    20. bar([1 2 3 4],strikes(:,3))
    21. title('Team 3 Strikes')
    22. % Team 4
    23. nexttile
    24. bar([1 2 3 4],strikes(:,4))
    25. title('Team 4 Strikes')
    26. % Team 5
    27. nexttile(7)
    28. bar([1 2 3 4],strikes(:,5))
    29. title('Team 5 Strikes')

            如图所示:

            显示一个带有图例的较大绘图。调用 nexttile 函数以将坐标区的左上角放在第五个图块中,并使坐标区占据图块的两行和两列。绘制所有团队的分数。将 x 轴配置为显示四个刻度,并为每个轴添加标签。然后在布局顶部添加一个共享标题。 

    1. nexttile(5,[2 2]);
    2. plot([1 2 3 4],scores,'-.')
    3. labels = {'Team 1','Team 2','Team 3','Team 4','Team 5'};
    4. legend(labels,'Location','northwest')
    5. % Configure ticks and axis labels
    6. xticks([1 2 3 4])
    7. xlabel('Game')
    8. ylabel('Score')
    9. % Add layout title
    10. title(t,'April Bowling League Data')

             如图所示:

    显示极坐标图和地理图

            创建 1×2 分块图布局。在第一个图块中,显示包含连接地图上两个城市的线的地理图。在第二个图块中,在极坐标中创建一个散点图。

    1. tiledlayout(1,2)
    2. % Display geographic plot
    3. nexttile
    4. geoplot([47.62 61.20],[-122.33 -149.90],'g-*')
    5. % Display polar plot
    6. nexttile
    7. theta = pi/4:pi/4:2*pi;
    8. rho = [19 6 12 18 16 11 15 15];
    9. polarscatter(theta,rho)

            如图所示:

    重新配置上一个图块中的内容

            nexttile 输出参数的一个有用的用途体现在您想调整前一个图块中的内容时。例如,您可能决定要重新配置先前绘图中使用的颜色图。

            创建一个 2×2 分块图布局。调用 peaks 函数以获取预定义曲面的坐标。然后在每个图块中创建一个不同的曲面图。

    1. tiledlayout(2,2);
    2. [X,Y,Z] = peaks(20);
    3. % Tile 1
    4. nexttile
    5. surf(X,Y,Z)
    6. % Tile 2
    7. nexttile
    8. contour(X,Y,Z)
    9. % Tile 3
    10. nexttile
    11. imagesc(Z)
    12. % Tile 4
    13. nexttile
    14. plot3(X,Y,Z)

            如图所示:

            要更改第三个图块中的颜色图,请获取该图块中的坐标区。通过指定图块编号调用 nexttile 函数,并返回坐标区输出参数。然后将坐标区传递给 colormap 函数。 

    1. ax = nexttile(3);
    2. colormap(ax,cool)

            如图所示:

    重新配置跨图块坐标区

            创建一个 2×3 分块图布局,其中包含两个分别位于单独图块中的图,以及一个跨两行两列的图。

    1. t = tiledlayout(2,3);
    2. [X,Y,Z] = peaks;
    3. % Tile 1
    4. nexttile
    5. contour(X,Y,Z)
    6. % Span across two rows and columns
    7. nexttile([2 2])
    8. contourf(X,Y,Z)
    9. % Last tile
    10. nexttile
    11. imagesc(Z)

            如图所示:

            要更改跨图块坐标区的颜色图,请将图块位置标识为坐标区左上角图块所在的位置。在本例中,左上角在第二个图块中。使用 2 作为图块位置调用 nexttile 函数,并指定输出参数以返回该位置的坐标区对象。然后将坐标区传递给 colormap 函数。 

    1. ax = nexttile(2);
    2. colormap(ax,hot)

            如图所示:

    替换上一个图块中的内容 

            加载 patients 数据集,并基于变量子集创建一个表。然后创建一个 2×2 分块图布局。在第一个图块中显示散点图,在第二个图块中显示热图,并显示跨底部两个图块的堆叠图。

    1. load patients
    2. tbl = table(Diastolic,Smoker,Systolic,Height,Weight,SelfAssessedHealthStatus);
    3. tiledlayout(2,2)
    4. % Scatter plot
    5. nexttile
    6. scatter(tbl.Height,tbl.Weight)
    7. % Heatmap
    8. nexttile
    9. heatmap(tbl,'Smoker','SelfAssessedHealthStatus','Title','Smoker''s Health');
    10. % Stacked plot
    11. nexttile([1 2])
    12. stackedplot(tbl,{'Systolic','Diastolic'});

            如图所示:

            调用 nexttile,并将图块编号指定为 1 以使该图块中的坐标区成为当前坐标区。用散点直方图替换该图块的内容。 

    1. nexttile(1)
    2. scatterhistogram(tbl,'Height','Weight');

            如图所示:

    在单独图块中显示共享颜色栏 

            当要在两个或多个图之间共享颜色栏或图例时,可以将其放置在一个单独图块中。在分块图布局中创建 peaks 和 membrane 数据集的填充等高线图。

    1. Z1 = peaks;
    2. Z2 = membrane;
    3. tiledlayout(2,1);
    4. nexttile
    5. contourf(Z1)
    6. nexttile
    7. contourf(Z2)

            如图所示:

            添加一个颜色栏,并将其移至 east 图块。 

    1. cb = colorbar;
    2. cb.Layout.Tile = 'east';

            如图所示:

    手动创建和配置坐标区 

            有时,可能需要在调用绘图函数之前手动创建坐标区。在创建坐标区时,请将 parent 参数指定为分块图布局。然后通过对坐标区设置 Layout 属性来定位坐标区。

            创建分块图布局 t 并指定 'flow' 图块排列。在前三个图块中各显示一个绘图。

    1. t = tiledlayout('flow');
    2. nexttile
    3. plot(rand(1,10));
    4. nexttile
    5. plot(rand(1,10));
    6. nexttile
    7. plot(rand(1,10));

            如图所示:

            通过调用 geoaxes 函数创建一个地理坐标区对象 gax,并将 t 指定为 parent 参数。默认情况下,坐标区进入第一个图块,因此通过将 gax.Layout.Tile 设置为 4 将其移至第四个图块。通过将 gax.Layout.TileSpan 设置为 [2 3],使坐标区占据图块的 2×3 区域。 

    1. gax = geoaxes(t);
    2. gax.Layout.Tile = 4;
    3. gax.Layout.TileSpan = [2 3];

            如图所示:

            调用 geoplot 函数。然后为坐标区配置地图中心和缩放级别。 

    1. geoplot(gax,[47.62 61.20],[-122.33 -149.90],'g-*')
    2. gax.MapCenter = [47.62 -122.33];
    3. gax.ZoomLevel = 2;

            如图所示:

    输入参数说明

    m - 行数 

            行数,指定为正整数。

    n - 列数

            列数,指定为正整数。

    parent - 父容器

            父容器,指定为 Figure、Panel、Tab、TiledChartLayout 或 GridLayout 对象。

    名称-值参数
            示例: tiledlayout(2,2,'TileSpacing','compact') 创建 2×2 布局,各图块之间采用最小间距。

            指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。

            可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

    TileSpacing - 图块间距

            图块间距,指定为 'loose'、'compact'、'tight' 或 'none'。使用此属性控制图块之间的间距。

            下表显示每个值如何影响 2×2 布局的外观。        

    外观

    'loose'

    'compact'

    'tight'

    'none'

    Padding - 布局周围的补白

            布局周围的填充,指定为 'loose'、'compact' 或 'tight'。不管此属性使用哪个值,布局都会为所有装饰元素(如轴标签)提供空间。

            下表显示每个值如何影响 2×2 布局的外观。

    外观

    'loose'

    'compact'

    'tight'

  • 相关阅读:
    centos上安装rabbitmq
    20道经典Java面试基础题
    【毕业设计】基于stm32的智能扫地机器人设计与实现 - 单片机 物联网
    YOLO目标检测数据集大全【含voc(xml)、coco(json)和yolo(txt)三种格式标签+划分脚本+训练教程】(持续更新建议收藏)
    全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布
    使用ChatGPT创建Makefile构建系统:使用Make运行Docker
    1-丁基-3-甲基咪唑锚氢氧化物[bmim]OH;新型氢氧型N-十二烷基双核吗啉离子液体[Nbmd]OH离子液体
    Flask包算法服务
    洛谷P1423 小玉在游泳
    【JAVA-1】JDK、JRE安装及卸载,有手就会!
  • 原文地址:https://blog.csdn.net/jk_101/article/details/125407301