当前位置:   article > 正文

MATLAB 矩阵数据可视化imagesc 以及 如何多图共用一个 colorbar_matlab imagesc

matlab imagesc

当遇到需要查看一个二维矩阵数据中值的大小分布情况时可以使用 MATLAB 把矩阵以图像的形式展现出来,这样更直观。MATLAB 的可视化函数之一是 imagesc( ),还有其他的方法,这里只介绍下 imagesc

目录

1、单一作图

2、同时绘制多图并共用 colorbar


1、单一作图

在 matlab 中定义一个 5*5 的矩阵如下:

data = reshape(linspace(1, 25, 25), [5, 5])'

将矩阵 data 直接传入 imagesc( ) 函数即可绘制相应的图像:

  1. imagesc(data);
  2. colorbar; % colorbar 的作用是生成一个代表颜色值的条状图例

颜色像素块的亮度跟矩阵中值的大小有关,值越大对应的像素块就越亮,反之,值越小相应的像素块就越暗。像素块的颜色风格可以更换,使用以下函数:

colormap(cool);

具体的参数有以下这些:

  1. parula turbo hsv hot cool spring summer
  2. autumn winter gray bone copper pink jet
  3. lines colorcube prismflag white

当然也可以自定义,但一般给定的选择就足够用了。

2、同时绘制多图并共用 colorbar

第一种种情况是不共用同一个 colorbar,这样直接使用 subplot(m,n,k) 函数依次创建子图即可:

  1. data = reshape(linspace(1, 25, 25), [5, 5])';
  2. %% 创建一个一行两列的子图,子图的顺序是由左到右,由上到下。当前是第一个子图
  3. subplot(1,2,1);
  4. imagesc(data);
  5. colorbar;
  6. colormap("winter"); % 以最后一个 colormap 的设置为准,不信你试试,这里设置了也没用
  7. ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置
  8. ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman'
  9. ax.FontSize = 10; % 10 号字体
  10. subtitle("这是第一个子图的标题"); % 这是子标题的定义方法
  11. %% 当前是第二个子图
  12. subplot(1,2,2);
  13. imagesc(data);
  14. colorbar;
  15. colormap("summer");
  16. ax = gca;
  17. ax.FontName = 'kaiti';
  18. ax.FontSize = 10;
  19. subtitle("这是第二个子图的标题"); % 这是子标题的定义方法
  20. %% 这是总标题的定义方法
  21. sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ...
  22. "FontSize", 15, "Fontname", 'KaiTi');

这第二种情况是一张图中的所有子图共用一个 colorbar,应该也是用的最多的吧?(我猜的)。这时就不能使用 subplot(m,n,k) 函数创建子图了,官方提供的方法是使用 tiledlayout(m, n) 函数和 nexttile 设置子图,看字面意思应该就能明白咋用的了,看一下下面的代码意会吧:

  1. data = reshape(linspace(1, 25, 25), [5, 5])';
  2. %% 创建一个一行两列的子图,子图的顺序是由左到右
  3. tiledlayout(1,2);
  4. %% 当前是第一个子图
  5. nexttile
  6. imagesc(data);
  7. ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置
  8. ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman'
  9. ax.FontSize = 10; % 10 号字体
  10. subtitle("这是第一个子图的标题"); % 这是子标题的定义方法
  11. %% 当前是第二个子图
  12. nexttile
  13. imagesc(data);
  14. ax = gca;
  15. ax.FontName = 'kaiti';
  16. ax.FontSize = 10;
  17. subtitle("这是第二个子图的标题"); % 这是子标题的定义方法
  18. %% 共用 colorbar
  19. cb = colorbar;
  20. cb.Layout.Tile = 'east'; % 这里不知道啥意思的话可以默念:"上北下南, 左西右东"
  21. %% 这是总标题的定义方法
  22. sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ...
  23. "FontSize", 15, "Fontname", 'KaiTi');

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/332881
推荐阅读
相关标签
  

闽ICP备14008679号