Matlab 数值计算功能非常强大,但是自带的颜色表较少而且也不那么好看,不过没关系,Kelly Kearney 已经提供了一个基于 Matlab 的 cptcmap 函数用来调用样式更加丰富和漂亮的 cpt 格式颜色表。下面就来介绍一下 cptcmap 的简单用法。

安装

Kelly Kearney 提供的 cptcmap-pkg 共包含了 4 个 m 文件和 1 个 cptfiles 文件夹,安装方法和主要功能如下:

  • cptcmap.m :核心函数,用来处理和应用 cpt 文件。需要将此函数添加到 Matlab 搜索路径中;
  • cptfiles :用于存放函数自带的 22 个 cpt 颜色表,默认与 cptcmap.m 放在同一目录下,可以在 cptcmap.m 中更改引用路径;
  • cptcbar.m :用来创建一个虚拟的 colorbar,不常用;
  • parsepv.m :cptcbar.m 的子函数,需要和 cptcbar.m 放置到同一目录;
  • minmax.m :计算不同条件下的最值,不常用。

cptcmap 除了调用 cptfiles 文件夹中的 cpt 文件外,也可以调用自己配置的 cpt 文件,只需要将自行配置的 cpt 文件放置到同一目录的 cptfiles_personal 文件夹下。

基本语法

% see more details in cptcmap.m
% basic usage
cptcmap('name');      % name: cpt file name without .cpt
cptcmap('showall');       % display all colormaps in cptfiles
% optional input variables
cptcmap('name', 'mapping', 'direct');       % or 'scaled' [default]
cptcmap('name', 'ncol', num);      % number of colors
cptcmap('name', 'flip', true);      % reverse the colormap order, default is false

示例

现在给出一个简单的示例:

a = 0:0.01:1;
b = a;
c = rand(101);
pcolor(a,b,c);
shading flat;
cptcmap('GMT_globe');
cb = colorbar;
set(cb, 'fontsize', 12);

GMT_globe