2012-03-29 7 views
1

ggplot2を使用してボックスプロットとして表示するデータがあります。基本的には2つの変数で層別化されています。ここでは(実際にそこに多くのですが、構造は同じである)データの例です:各タグの計算された統計を使用して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)のようになります。

x軸上に順序付けA、C、Bを誘導する
> 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 

(最大に最小)。しかし、私はこの情報を自分のデータに追加する方法を知らない(具体的には、余分な列を追加するのではなく、単にタグレベルでp値を付ける)か、x軸注文。どんな助けでも大歓迎です。

+0

私が知っている[ggplot2棒グラフで注文バー](http://stackoverflow.com/questions/5208679/order-bars-in-ggplot2-bar-graph) – joran

+0

の可能重複他の質問は棒グラフに関するものですが、同じ解決策で本当に同じ質問です。「TAG」が順序付けられた要素であることを確認してください。 – joran

+0

1つで2つの質問。また、[sorting-of-categorical-variables-in-ggplot]の重複した可能性があります(http://stackoverflow.com/questions/5916779/sorting-of-categorical-variables-in-ggplot) –

答えて

1

ここは方法です。第1のステップは、各TAGのp値を計算することである。これを行うには、ddplyを使用してデータをTAGで分割し、数式インタフェースを使用してwilcox.testを使用してp値を計算します。 plot文は、その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

関連する問題