M_Map:将他人的colorbar配色挪为己用

本文以IBCAO的北极地形图 https://www.ngdc.noaa.gov/mgg/bathymetry/arctic/currentmap.html 为例,介绍如何将其colorbar的配色方案应用到自己的M_Map地图中。
IBCAO Current Map of Arctic Ocean bathymetry
1. 使用截图工具截取IBCAO地形图的colorbar,并保存为图片cmap.png。此处忽略大于1000 m的部分的过渡色带。
IBCAO的colorbar

2. Matlab code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear; close; clc
% 导入图片文件
cmap=imread ('/Desktop/cmap.png'); % 76x2406x3 unit8,即长x宽xRGB数值
% 取原colorbar的横向对称轴上的数值,即将三维数组转化成二维矩阵
mline=cmap(38,:,:); % 1x2406x3 unit8
% 降维
cdata=squeeze(mline); % 2406x3 unit8
length(cmap)/24 %100.25
% 取原colorbar中每个色块的中间位置作为索引,创建自己的colorbar
id=50:100:length(cmap);
% 创建自己的colorbar矩阵
cdata=cdata(id,:); % 24x3 unit8
% 将颜色级数数组转化为RGB模型[0 1]数组。显示器采用8位量化,量化级数位2^8=256。
cdata=double(cdata)/256;
% 在自己的colorbar最后添加白色[1 1 1]色块,并保存成mat文件
cdata=[cdata;[1 1 1]];
mycmap=cdata;
save mycmap mycmap

自制的colorbar数据
1
2
3
4
5
6
7
8
9
10
11
% 作图
figure;
clf
m_proj('stereographic','lat',90,'long',0,'radius',25);
m_tbase('contourf',[-5000:500:6000],'edgecolor','none');
m_coast('linewidth',1,'color',[0 0 0]);
m_grid;
colormap(mycmap)
colorbar
caxis([-5000 2000])
saveas(gcf, 'myArc.jpeg')
用自制配色方案生成的北极地形图(myArc.jpeg)
大爷,赏个铜板呗~