2012-03-29 76 views
1

我有一些数据要使用ggplot2作为箱形图显示。它基本上是计数,由另外两个变量分层。这里的数据的一个例子(在现实中有很多更多,但结构是一样的):使用计算的统计量在ggplot2 boxplot中排序x轴使用计算的统计量

TAG Count Condition 
A  5   1 
A  6   1 
A  6   1 
A  6   2 
A  7   2 
A  7   2 
B  1   1 
B  2   1 
B  2   1 
B 12   2 
B  8   2 
B 10   2 
C 10   1 
C 12   1 
C 13   1 
C  7   2 
C  6   2 
C 10   2 

对于每个标签,存在固定数目的在条件1的观察,和条件2(在此它是3,但在实际数据中更多)。我希望有一个箱形图像以下的(“S”是如上述布置在数据帧):

ggplot(s, aes(x=TAG, y=Count, fill=factor(Condition))) + geom_boxplot() 

Plot of example data

这是优良的,但我希望能够由订购x轴每个标签的Wilcoxon测试的p值。例如,在上述数据中,值将是(对于标签A,B,和C分别为):

> wilcox.test(c(5,6,6),c(6,7,7))$p.value 
[1] 0.1572992 
> wilcox.test(c(1,2,2),c(12,8,10))$p.value 
[1] 0.0765225 
> wilcox.test(c(10,12,13),c(7,6,10))$p.value 
[1] 0.1211833 

这将诱导的排序A,C,B上的x轴(从最大到最小)。但是我不知道如何去将这些信息添加到我的数据中(特别是,在标签级别附加一个p值,而不是添加整个额外的列),或者如何使用它来更改x轴订购。任何帮助不胜感激。

+0

可能重复(http://stackoverflow.com/questions/5208679/order-bars-in-ggplot2-bar-graph) – joran 2012-03-29 22:23:19

+0

我知道另一个问题是关于条形图的问题,但它的确是同一个问题,并且有相同的解决方案:确保'TAG'是一个有序的因素。 – joran 2012-03-29 22:24:00

+0

两个问题在一个。此外可能重复的[排序分类变量在ggplot](http://stackoverflow.com/questions/5916779/sorting-of-categorical-variables-in-ggplot) – 2012-03-30 11:43:02

回答

1

这是一种方法。第一步是计算每个TAG的p值。我们通过使用ddply来完成这项工作,它通过TAG分割数据,并使用与wilcox.test的公式接口计算p值。情节声明根据其p值重新排列TAG。

library(ggplot2); library(plyr) 
dfr2 <- ddply(dfr, .(TAG), transform, 
    pval = wilcox.test(Count ~ Condition)$p.value) 

qplot(reorder(TAG, pval), Count, fill = factor(Condition), geom = 'boxplot', 
    data = dfr2) 

enter image description here

[在GGPLOT2条形图命令吧]的