2010年4月16日 星期五

MATLAB colormap

作者: hantis (呢呢是豬) 看板: Hantis
標題: [隨寫] Note: MATLAB colormap
時間: Fri Apr 16 09:15:47 2010


   contourf 之類的 color shading 圖
   有兩個東西會混淆: colormap, caxis

   colormap 是給定一個顏色矩陣
   讓作圖的時候依據data的值是多少來填色
   所以 hot, gray, hsv, winter, autumn, ...
   這些其實是產生顏色矩陣的函數
   例如有個顏色矩陣產生函數叫做 cmatrix
   其色調是從黑色到白色
   那麼

   colormap cmatrix

   作用等同於

   colormapt(cmatrix(128))

   cmatrix(128)所產生的東西是 [R,G,B]
   其中 R,G,B 三個 element 都是從 0 到 1 的 column matrix
   也就是 linspace(0,1,128)'

   所以想使用任意色調來著色
   只需自行產生色調矩陣
   然後放進 colormap 即可

   例如最高值是藍色 [0 0 1]
   最低值是白色 [1 1 1] 的色調
   可以用
   cmatrix = [linspace(1,0,Nc);linspace(1,0,Nc);ones(1,Nc)]';
   colormap(cmatrix)
   這樣就行了
   其中 Nc 是想要分割出來的色段數
   MATLAB內定值是 128

   至於 caxis
   是定義了 colormap 之後
   自行調整 data 中哪個數字視為 colormap 的最高值或最低值
   MATLAB內定是把 data 中的最高值
   以 colormap 的最下面一個顏色來填
   而 data 中的最低值則以第一個顏色來填
   例如上面的 cmatrix
   第一個顏色是白色 [1 1 1]
   最後一個顏色是藍色 [0 0 1]
   假如 contourf 的 Z data 是
   [1 2 3 4;
    5 6 7 8;
    9 8 7 6;
    5 4 3 2]
   那麼在 9 對應到的位置就會填上藍色
   在 1 的地方會填上白色

   假如希望3以下的都用白色來填
   7以上的都用藍色來填
   則可以
   caxis([3 7])
   也就是說
   沒下這道命令的話內定值是 caxis([1 9])
   或者說是 caxis([min(min(Z)),max(max(Z))])

沒有留言:

張貼留言