我对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 :(得分: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])