matlab 的 colormap 函數詳解

原文:http://blog.sina.com.cn/s/blog_618af1950100eyp4.html保留一下撒,以後好查閱偷笑

matlab中,每個figure都有(而且僅有)一個colormap,翻譯過來就是色圖。

COLORMAP(MAP) 用MAP矩陣映射當前圖形的色圖。
    COLORMAP('default')  默認的設置是 JET.
    MAP = COLORMAP 獲得當前色圖矩陣.
    COLORMAP(AX,...) 應用色圖到AX座標對應的圖形,而非當前圖形。

 MAP實際上是一個mx3的矩陣,每一行的3個值都爲0-1之間數,分別代表顏色組成的rgb值,
[1 0 0] 代表紅色,[0 1 0]代表綠色,[0 0 1]代表藍色。系統自帶了一些colormap,如:winter、autumn等。輸入winter,就可以看到它是一個64x3的矩陣。用戶可以自定義自己的colormap,而且不一定是64維的。
[0 0 0] is black, [1 1 1] is white,
[1 0 0] is pure red, [.5 .5 .5] is gray, and
[127/255 1 212/255] is aquamarine.
   
 那麼顏色在fill或patch,SURFACE等函數中到底是如何顯示的呢?本質上,是把具體的顏色變成colormap中的相應index,也就是行數。這個過程叫做換算映射:將指定的數值顏色向量(矩陣)C,映射到對應的顏色。顏色矩陣C的數值範圍爲[Cmin, Cmax], Cmin 和Cmax的數值或者爲
 min(min(C))  max(max(C)),也可以在CAXIS中設置。
在matlab中,圖形窗的屬性'CdataMapping‘缺省設置值爲'scaled',也就是線性的映射。
Cmin對應的值映射到colormap的第一行,Cmax對應的值映射到colormap的最後一行。
映射過程如下:
首先,需要根據caxis取得Cmin和Cmax兩個變量(默認值爲0和1),畫圖時如果指定了數值顏色向量(矩陣)C,Cmin和Cmax自動設置爲C中的最大值和最小值。當你想控制時,可以自定義。比如將Cmax減小,這樣將把所有大於Cmax的C值,全部都映射到同一個顏色(colormap 中index最大的行代表的顏色)。
根據Cij在Cmin和Cmax之間的比例關係,確定對應的顏色的index,默認爲線性映射。
也就是說,當制定了數值顏色向量(矩陣)C之後畫圖,圖中顏色的使用範圍會自動佔滿整個顏色範圍!
實例:
clc;
clear all;
x=[0 1 1 0];
y=[0 0 1 1];  %定義四個點 [0 0] [1 0] [1 1] [0 1]
H_F=fill(x,y,[0 0.1 0.2 0.6]);  %定義四個點的C值

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;

%本例中顏色從[0 0 0] 變化到[1 1 0]
%增加row_cmap的值,如變化到100,則可看到顏色的漸變,而非跳躍型變化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章