使用计算的统计量在ggplot2 boxplot中排序x轴使用计算的统计量
问题描述:
我有一些数据要使用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()
这是优良的,但我希望能够由订购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轴订购。任何帮助不胜感激。
答
这是一种方法。第一步是计算每个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)
可能重复(http://stackoverflow.com/questions/5208679/order-bars-in-ggplot2-bar-graph) – joran 2012-03-29 22:23:19
我知道另一个问题是关于条形图的问题,但它的确是同一个问题,并且有相同的解决方案:确保'TAG'是一个有序的因素。 – joran 2012-03-29 22:24:00
两个问题在一个。此外可能重复的[排序分类变量在ggplot](http://stackoverflow.com/questions/5916779/sorting-of-categorical-variables-in-ggplot) – 2012-03-30 11:43:02