基于矩阵值的颜色

时间:2012-11-27 22:44:08

标签: matlab octave

我对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

应该更容易。

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您要求的内容,但如果您预先在方阵中设置数字,请尝试使用imagesc

例如,尝试imagesc(rand(5));。在这种情况下,rand(5)生成一个5x5的随机数矩阵。

希望这有帮助。

答案 1 :(得分:0)

假设您有一个n-by-3的数组,其列[差异,结果,p值]称为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])