2014-05-14 106 views
4

我在matlab中有2d線圖,每行都根據一個值進行着色。我想添加一個顯示與這些值相對應的顏色的顏色條。matlab colorbar for lineplot color by value

我得到了一個解決方案,根據我想要的值繪製線條,但我無法弄清楚正確地獲取顏色條。我一直在尋找這個,但我被卡住了。

  1. 定義RGB顏色矩陣COL。 (N×3低紅到黑矩陣對應於等間隔值0:1)。
  2. 根據數據的z值對數據進行排序。
  3. 插值COL矩陣以獲取所有z值的值,爲行提供TRUECOL矩陣。
  4. 將axiscolor-ordering設置爲TRUECOL矩陣並繪製數據。

簡約例如:

% Generate 10 lines of 10 points 
x = normrnd(0,1,10,10); 
% The corresponding values are 
% Note that these do not have to linearly spaced in real code 
z = [0,0.05,0.1,0.11,0.12,0.2,0.4,0.45,0.8,0.9]; 
% Define colormatrix 
COL = [0.996078431372549 0.878431372549020 0.823529411764706;... 
    0.937254901960784 0.231372549019608 0.172549019607843;... 
    0.403921568627451 0 0.0509803921568627]; 
% Interpolate the COL matrix to get colors for the data 
TRUECOL = interp1(linspace(0,1,3),COL,z,'pchip'); 
% Set the axis coloring qnd plot the data 
set(gcf,'DefaultAxesColorOrder',TRUECOL); 
plot(x); 
colormap(TRUECOL); 
colorbar 

我然後改變顏色表並畫出colobar,然而,在彩條的顏色不對應於值Ž。有沒有告訴matlab哪種顏色對應哪個值的方法?看看colorbar編輯器,我發現CData必須與它有關,但我找不到一種方法來指定CData應該是z。

+0

找到就可以完成顏色條線路的例如通過添加顏色表的變化和顏色條的繪圖? – Trilarion

+0

完成。謝謝@Trilarion – MrOperator

+0

顏色條的顏色和線條顏色看起來大致相似。 「不符合」是什麼意思? – Trilarion

回答

2

我的理解是,您希望顏色條上的標籤從0變爲1,而不是0到11.要修復此問題,請使用此caxis命令。爲了在顏色條中獲得更精細的顏色漸變,您需要更精細地插入顏色映射。試試這個:

colormap(interp1(linspace(0,1,size(COL,1)), COL, linspace(0,1,100))); 
caxis([0,1]); 
colorbar 

enter image description here