2012-03-29 111 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條形圖命令吧]的