【matlab】绘制云图 + 修改配色方案 + 保存配色方案

一、绘制云图

  假设 x、y 为坐标向量,f 为各个坐标点所对应的函数值 的向量

1、需要根据 x、y 的范围进行划分,可以理解为建立坐标系或比例尺 X1和Y1

X1 = linspace(min(x),max(x),100);           %将坐标均分成100份
Y1 = linspace(min(y),max(y),100);

2、利用插值计算,计算出 函数值f 在坐标X1、Y1上的值

[X,Y,F] = griddata(x,y,f,X1',Y1,'v4');      %'v4'代表插值方法为matlab4样条函数内插,也可用'linear','cubic','nearest'等

3、绘制云图

pcolor(X,Y,F);
shading interp                  %色彩平滑
colormap(Small_Rainbow)         %使用自定义的配色方案
colorbar                        %分布柱图

4、修改参数,并对比

        4.1  修改坐标系X1、Y1的精细度 。可以看出划分参数达到一定精度即可,过高的精度反而影响计算效率。  

        4.2  修改插值方法

  可以看出,linear和nearset插值对生成云图而言,呈现效果并不好,而另外三者还需要进行更细致的对比

  通过放大云图,对比局部,绘制出来的云图,在极值点附近的光滑程度 natural < cubic < v4,但cubic和v4相差不大。

  而计算时间分别为:natrual为0.086秒、cubic为0.028秒,v4为0.637秒

   由于本人所需要计算的数据量较小,采用呈现效果更好的 “v4”插值也无妨

        4.3  云图绘制的其他函数,以及可修改参数

   contourf画图时所采用的代码

[p,s] = contourf(X,Y,F,100);
title('绘图方法contourf,透明等高线,等高线间距100')
s.LineColor = 'none'
shading interp          %色彩平滑

  通过对比,采用pcolor更优,代码更少,效果也更好

参考资料:

用matlab画云图或由离散点生成云图-MATLAB基础-MATLAB之家

matlab绘制云图或三维曲面图_yangguangdblu的博客-CSDN博客_matlab画云图

https://jingyan.baidu.com/article/ea24bc39fbfa9dda62b3318b.html

二、修改配色方案

1、使用自定义配色方案

  有两种方法调出“颜色图编辑器”,第一种是在命令行内输入colormapeditor;另一种是在绘图之后,在figure页面的上方菜单,点击“编辑——颜色图”即可调出。(matlab2016a)

   之后通过删减、增加颜色索引,或修改索引所对应的颜色,即可将配色修改成自己想要的配色,比如这样:

   但是这样的修改,每次重新启动matlab,都需要重新设置。十分麻烦

2、采用代码,使用自定义方案

  设置色彩索引(锚点)的矩阵,并将其命名为Small_Rainbow,然后调用这个自定义配色方案

Small_Rainbow = [0 0 1;    %参考知乎大佬的文章,它采用的是0-255,但是我尝试了一下不行
                 0 1 1;    %所以我采用0-1的形式,中文文档也是这么用的
                 0 1 0;    
                 1 1 0;    %5行表示一共有5个颜色标签(锚点)
                 1 0 0];   %3列分别表示R,G,B三种颜色

colormap(Small_Rainbow)    %调用自定义的配色方案   

  此时的呈现效果···不太理想,原因是颜色缺少更合适的层次,即便插值或者绘图的精度足够,但是直观上看依然呆板。所以下一步要细化颜色层次

3、优化自定义方案

  将5个锚点之间用更多的插值填充,得到了 81 x 3 的一个颜色矩阵,同样命名为Small_Rainbow,并调用,前后结果对比:

参考资料:

在matlab中自定义colormap绘制云图 - 知乎

三、保存配色方案、

1、保存配色方案

2、调用配色方案

load 'Small_Rainbow.mat'   %导入配色方案

完整代码

% 导入并生成云图
data = load('C:\Users\Administrator\Desktop\IMR_00000010.txt');
load 'Small_Rainbow.mat'       %导入配色方案

%确定像素坐标矩阵
x = data(:,1)';
y = -1 * data(:,2)';

%确定生成云图的内容
f = data(:,3)';

%生成坐标轴
X1 = linspace(min(x),max(x),100);
Y1 = linspace(min(y),max(y),100);

%插值计算
[X,Y,F] = griddata(x,y,f,X1',Y1,'v4');

%生成仿彩色图
pcolor(X,Y,F);
title('绘图方法pcolor')
shading interp                  %色彩平滑
colormap(Small_Rainbow)         %使用自定义的配色方案
colorbar                        %分布柱图

总结

多看官方文档,能救百病

  • 28
    点赞
  • 242
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值