Matlab中的差异箱图绘制图

时间:2013-07-24 12:43:26

标签: matlab plot boxplot anova

我有兴趣在Matlab中创建这样的情节。 Plot of Means http://www.3rs-reduction.co.uk/assets/images/rcmdr2202.JPG

通过“喜欢这个”,我的意思是我希望有两组,称他们为A和B,观察两次,预处理和后处理,其中情节由A和B的左边一组框图组成在预处理时,正确的组由治疗后时间A和B的箱线图组成,其中A pre的平均值通过线连接到A柱的平均值,B pre的平均值用线连接到平均值B帖子。我并不是说需要保持颜色形状或线条(而不是盒子)的特定外观。

我尝试使用boxplot命令到达并使用“hold on”,但我无法弄清楚如何使它们完全融合在一起。为了得到具体的结论,假设像Matlab boxplot命令一样,观察结果是行,字段是列,顺序是((A,pre),(A,post),(B,pre),( B,柱))。

构建的一些示例代码:

simlength = 100;
groupmeans = [.1, .2, .2, .4];
groupstddev = [.05, .05, .05, .05];
simholder = randn(simlength,4);
simholder = repmat(groupmeans ,simlength,1) + simholder     .* repmat(groupstddev ,simlength,1);
boxplot(simholder)

如果我可以堆叠结果1和3以及该箱图的结果2和4并在组之间绘制线条意味着我会非常高兴,只是不确定如何将所有部分组合在一起。

谢谢!

2 个答案:

答案 0 :(得分:1)

如何处理以下内容:

x = rand(2, 1);           % ? maybe just leave out?
y = rand(2, 1);           % [mean(Apre), mean(Apost)]
e = rand(2, 1)*.2;        % ? is this maybe [std(Apre), std(Apost)]
errorbar(x, y, e, 'o-');  % You can leave off the x here if you don't need it

hold all

%Now repeat for B
x = rand(2, 1);
y = rand(2, 1);
e = rand(2, 1)*.2;
errorbar(x, y, e, '^-');

legend({'First series', 'Second Series'})

答案 1 :(得分:0)

Dan的答案很接近(谢谢!),但没有包含模仿上图所需的格式细节。一旦我弄清楚如何做到这一点,我尝试编辑他来添加所需的更改,但编辑不关心我的更改。所以这里是我想要的。

y1 = rand(2, 1);           
e1 = rand(2, 1)*.2;       
errorbar(y1, e1, 'o-');  

hold all

%Now repeat for B
y2 = rand(2, 1);
e2 = rand(2, 1)*.2;
errorbar(y2, e2, '^-');
plotrange = [y1-e1;y2-e2;y1+e1;y2+e2];
yplotmin = min(plotrange)* .5;
yplotmax = max(plotrange) * 1.5;

legend({'Control', 'Treatment'})

set(gca,'YLim',[yplotmin yplotmax])
set(gca,'XLim',[.5 2.5])
set(gca,'XTick',1:2)
set(gca,'XTickLabel',{'Pre-treatment', 'Post-treatment'});

Difference in Difference Boxplot-like Plot