大家好,又见面了,我是你们的朋友全栈君。
介绍
Matlab自带颜色图比较单调,很多时候无法达到其它绘图工具,如:NCL、Python matplotlib、GMT等绘图软件颜色图效果。下面就介绍如何将上述丰富的颜色图为己所用,以及自定义颜色图。
方法1
颜色图下载
NCL官网提供了上述绘图工具的颜色图合集,因此只需要将需要的颜色图下载后进行使用即可。
选择颜色图WhiteBlueGreenYellowRed下载。
Matlab读取下载的颜色表
代码语言:javascript复制clc; clear all; close all
figure
mesh(peaks)
colorbar
color = ncl_colormap('WhiteBlueGreenYellowRed');
colormap(color)
figure
mesh(peaks)
num = 20;
color2 = color(floor(linspace(1,length(color),num)),:);
colormap(color2)
colorbar
代码语言:javascript复制function color = ncl_colormap(colorname)
temp = import_ascii([colorname '.rgb']);
temp(1:2) = [];
temp = split(temp,'#');
temp = temp(:,1);
% color = deblank(color);
temp = strtrim(temp);
temp = regexp(temp, 's ', 'split');
for i=1:size(temp,1)
color(i,:) = str2double(temp{
i});
end
color = color/255;
end
代码语言:javascript复制% 成行读取文本数据
% Edited Time:2019-02-22
function ascii = import_ascii(file_name)
i = 1;
fid = fopen(file_name);
while feof(fid) ~= 1
tline = fgetl(fid);
ascii{
i,1} = tline; i = i 1;
end
fclose(fid);
end
效果
注意:图2为非连续颜色图,刻度和颜色图不对应,需要自己修改。
方法2
改方法需要下载rgbmap函数,以及rgb函数。
代码语言:javascript复制h = surf(peaks);
colorbar
rgbmap('white','blue','green','yellow','red')
shading interp
set(h,'edgecolor','k','edgealpha',.2)
caxis([-5 5])
axis tight
总结
两种方法,第一种方法比较简单,不用花费太多精力在颜色搭配上,就可以获得效果较好的颜色图。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138349.html原文链接:https://javaforall.cn