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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM