0

我对 Matlab/octave 很陌生,但我习惯于使用 R。所以我想做的是以下内容。我想绘制我的 t.test 结果(y 值)与 t.test 差异(x 值)。很简单,我确实用 R 获得了这些数据,但我想用 Matlab 绘图。问题是点的颜色应该根据某一列中的值而变化。所以基本上它是p值。所以我得到了 yx 和 p 值的三列。

我缺少的是 R 中的 ifelse 函数。

所以也许:

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

它应该更容易。

4

2 回答 2

0

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

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

希望这可以帮助。

于 2012-11-28T00:11:19.140 回答
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])
于 2012-11-28T00:36:41.467 回答