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

目录

1、单一作图

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

1、单一作图

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

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

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

imagesc(data);

colorbar; % colorbar 的作用是生成一个代表颜色值的条状图例

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

colormap(cool);

具体的参数有以下这些:

parula turbo hsv hot cool spring summer

autumn winter gray bone copper pink jet

lines colorcube prismflag white

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

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

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

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

%% 创建一个一行两列的子图,子图的顺序是由左到右,由上到下。当前是第一个子图

subplot(1,2,1);

imagesc(data);

colorbar;

colormap("winter"); % 以最后一个 colormap 的设置为准,不信你试试,这里设置了也没用

ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置

ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman'

ax.FontSize = 10; % 10 号字体

subtitle("这是第一个子图的标题"); % 这是子标题的定义方法

%% 当前是第二个子图

subplot(1,2,2);

imagesc(data);

colorbar;

colormap("summer");

ax = gca;

ax.FontName = 'kaiti';

ax.FontSize = 10;

subtitle("这是第二个子图的标题"); % 这是子标题的定义方法

%% 这是总标题的定义方法

sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ...

"FontSize", 15, "Fontname", 'KaiTi');

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

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

%% 创建一个一行两列的子图,子图的顺序是由左到右

tiledlayout(1,2);

%% 当前是第一个子图

nexttile

imagesc(data);

ax = gca; % 全称get current axes(个人猜想),获取当前坐标区的属性,用于后续的设置

ax.FontName = 'kaiti'; % 楷体的拼音,经实验,无所谓大小写。如果是英文,可以设置为 'Times New Roman'

ax.FontSize = 10; % 10 号字体

subtitle("这是第一个子图的标题"); % 这是子标题的定义方法

%% 当前是第二个子图

nexttile

imagesc(data);

ax = gca;

ax.FontName = 'kaiti';

ax.FontSize = 10;

subtitle("这是第二个子图的标题"); % 这是子标题的定义方法

%% 共用 colorbar

cb = colorbar;

cb.Layout.Tile = 'east'; % 这里不知道啥意思的话可以默念:"上北下南, 左西右东"

%% 这是总标题的定义方法

sgtitle(["这是总标题", "像这样使用字符串数组的方式可以实现标题分行"], ...

"FontSize", 15, "Fontname", 'KaiTi');

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: