是时候放弃pcolor了

pcolor .vs. imagesc

1. 关于pcolor

通常,我们需要把Matlab的计算结果(如二维的矩阵)以图形的形式呈现出来,在使用matlab画图函数时,通常会用到 pcolor 函数,即Pseudocolor (checkerboard) plot棋盘图

  • 举例
>> data = magic(4)
data =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> pcolor(data);
>> colorbar
  • 结果为
    在这里插入图片描述

【注意】

  1. 画图的时候,矩阵是上下颠倒的,最大的16在最下面;
  2. 矩阵中图块的颜色对应的是该块左下角的点,如此以来,矩阵中的最后一行和最后一列都相对于没有画
  3. 颜色块的中心点不是矩阵的行序号或者列序号;可以通过pcolor(x,y, data)错位的方式进行对应,可以参考博文

【当然】

  1. 如果我们需要画的矩阵是规则的(即每个行列位置都不是NaN),那这样画其实是有问题的!因为总会有一行和一列是没有被颜色块所表现;
  2. 如果我是要画某个地区,其形状通常是不规则的(地区的周围有很多NaN值),这样情况下,其实用pcolor函数就没有太多影响;

2. 关于imagesc

【目的】
我们画图的目的其实更多是想直接以色块的形式呈现矩阵的数值大小。因此,偶然发现,其实正确的打开方式,应该是 imagesc函数

  • 举例
>> data = magic(4)
data =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> imagesc(data);
>> colorbar
  • 结果为
    在这里插入图片描述
  1. 图块顺序和矩阵位置完全一致
  2. 不存在缺行少列的情况
  3. 行序号和列序号对应的就是色块中心点

如果数据中间有NaN的情况,在画图时可以将其隐去

data =
    16     2     3    13
     5   NaN    10     8
     9     7     6   NaN
     4    14    15     1
h1=imagesc(data);
set(h1,'alphadata',~isnan(data));

结果为:
在这里插入图片描述

【感悟】
方法远比努力更重要,多看多听多学多试,才不会固步自封!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨海深

感谢您的支持和鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值