2012-11-27 42 views
0

im kind a new to Matlab/octave,但我習慣於與R一起工作。所以我想要做的是以下內容。我想繪製我的t.test結果(y值)與t.test差值(x值)。很簡單,我確實用R獲得了這些數據,但我想用Matlab進行繪圖。問題是,點的顏色應該根據某一列中的值而改變。所以基本上這是p值。所以我得到了三個列y x和p值。基於矩陣的值的顏色

我缺少的是什麼,從R.

的ifelse功能

所以也許:

if [:,3]<0.05 
    a='red'; 
elseif [:,3]<0.01 
     a='green'; 
else 
    a= black; 
end 

應該比較容易。

+0

MATLAB有一個'elseif'函數,而不是ifelse。我已更新帖子以符合您的問題。 –

回答

0

假設您有一個n-3的數組,其中列[[difference,result,p-value]稱爲data。然後,您可以繪製data這樣的:

figure,hold on 
idxK = data(:,3) > 0.05; 
plot(data(idxK,1),data(idxK,2),'k') 
idxG = data(:,3) < 0.01; 
plot(data(idxG,1),data(idxG,2),'g') 
plot(data(~(idxG|idxK),1),data(~(idxG|idxK),2),'r') 

或者,你可以使用scatter

colorIdx = data(:,3)>0.05 + data(:,3)>0.01 + 1; 
figure 
scatter(data(:,1),data(:,2),[],colorIdx) 
colormap([0 1 0;1 0 0;0 0 0]) 
0

我不知道我完全理解你問什麼,但如果你預先在方陣設置了號碼,然後嘗試使用imagesc

例如,嘗試做imagesc(rand(5));。在這種情況下,rand(5)產生一個5×5的隨機數矩陣。

希望這會有所幫助。