zoukankan      html  css  js  c++  java
  • matlab_函数colormap

    matlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图

       COLORMAP(MAP) 用MAP矩阵映射当前图形的色图
       COLORMAP('default')  默认的设置是 JET.
       MAP = COLORMAP 获得当前色图矩阵.
       COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当前图形。

       colormap实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,如[0 0 1]代表蓝色。系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。用户可以自定义自己的colormap,而且不一定是64维的

       那么颜色在fill或patch中到底是如何显示的呢?本质上,是把具体的颜色变成colormap中的相应index,也就是行数。这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。

       在matlab中,图形窗的属性'CdataMapping’缺省设置值为'scaled',也就是线性映射

    映射过程如下:

       首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap中index最大的行代表的颜色)。

       根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。

      也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!!!

       另外,fill中指定了某些点的颜色值,其他颜色值都是采用插值的方法确定。

    例1:

    colormap([winter;autumn;summer])%相当于自定义了一个64*3维的colormap
    x=[0 1 1 0];
    y=[0 0 1 1];
    fill(x,y,[0 0.1 0.2 0.3]);%则Cmin=0,Cmax=0.3
    colorbar;%显示色图bar

     
    运行结果如下:
     colormap
     
    例2:
    %本例中颜色从[0 0 0] 变化到[1 1 0]
    %增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。
    row_cmap = 15;  %定义色图矩阵的行数
    color_map1=zeros(row_cmap,3);  %定义色图矩阵
    color_r = 0:1/(row_cmap-1):1; 
    color_g = 0:1/(row_cmap-1):1;
    color_b = 0:1/(row_cmap-1):1;
    color_map1(:,1) = color_r; 
    color_map1(:,2) = color_g;
    colormap(color_map1);
    colorbar;
    而我的例子中用到的colormap(gray(128))
    表示的是此图的映射色图是灰度级为128的灰度图,即黑白图。gry(128)为128×3的数组,且其中的r=g=b。
  • 相关阅读:
    docker工具链概述
    Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (二)
    Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (一)
    阿贝云免费虚拟主机使用体验
    Topshelf 秒建 Windows 服务
    一次兼职项目开发的经历
    修改了my.ini没有效果,MySql的字符集还是没有变成utf8——mysql中文乱码
    【转载】Fiddler工具使用介绍(一)
    C#中$的用法
    系统开发常用模块
  • 原文地址:https://www.cnblogs.com/funnyman/p/4394564.html
Copyright © 2011-2022 走看看