2012-10-20 4 views
31

boxplotのようなウィスカーの端に垂線を自動的に付けることができます。ボックスプラットにウィスカーの端を入れて

+1

あなたはggplotは、線を描画する分位数を計算し、あなた自身の 'geom_segment'または' geom_crossbar'を描画することによってこれを行うことができます。 [この質問を参照してください](http://stats.stackexchange.com/questions/8137/how-to-add-horizo​​ntal-lines-to-ggplot2-boxplot) – Justin

+1

ggplot2でこれを行う必要がある理由はありますか?あなたが望むものをすでに行っている 'boxplot'を使わない、あるいは純粋に学問的興味のこの質問ですか? –

+0

@Justinありがとう、私はその質問をチェックアウトしたが、それは私のために進んでいると私はエラーを取得し続けて、私は何を交換するか分からない、ごめんなさい:/ – user1762299

答えて

6

ウィスカーの端を計算するのにstat_boxplotを使用することは可能かもしれませんが、私はggplot2ウィザードでは不十分です。そのために基本関数を使用します。

set.seed(42) 
df <- data.frame(cond = factor(rep(c("A","B"), each=500)), 
       value = c(rnorm(500,mean=1,sd=0.2),rnorm(500, mean=1.5,sd=0.1))) 


whisk <- function(df,cond_col=1,val_col=2) { 
    require(reshape2) 
    condname <- names(df)[cond_col] 
    names(df)[cond_col] <- "cond" 
    names(df)[val_col] <- "value" 
    b <- boxplot(value~cond,data=df,plot=FALSE) 
    df2 <- cbind(as.data.frame(b$stats),c("min","lq","m","uq","max")) 
    names(df2) <- c(levels(df$cond),"pos") 
    df2 <- melt(df2,id="pos",variable.name="cond") 
    df2 <- dcast(df2,cond~pos) 
    names(df2)[1] <- condname 
    df2 
} 



library(ggplot2) 

plot1 <- ggplot(df, aes(x=cond)) 
plot1 <- plot1 + geom_errorbar(aes(ymin=min,ymax=max),data=whisk(df),width = 0.5) 
plot1 <- plot1 + geom_boxplot(aes(y=value)) 
plot1 

boxplot with horizontal at whisker ends

45

ほのめかしたが、@Rolandによって実装されていないとして、あなたはこれを実装するためにstat_boxplotを使用することができます。トリックは_boxplotを2回呼び出し、いずれかのコールに対してgeomerrorbarに設定します。

Rはペンとペーパーのアプローチを使用しているため、最初にエラーバーを実装することをお勧めします。従来のボックスプロットを上に描画します。ローランドのダミーデータdf

ggplot(df, aes(x=cond, y = value)) + 
stat_boxplot(geom ='errorbar') + 
geom_boxplot() # shorthand for stat_boxplot(geom='boxplot') 

enter image description here

@stat_boxplotのヘルプを使用して

?stat_boxplot)詳細我々はできるウィスカー行のサイズを変更するにはdata.frame

+0

これを説明する時間をとってくれてありがとう! :) – gaelgarcia

+1

'geom_boxplot(width = .2)'を使うと、どのようにこれらのウィスカーラインのサイズを変更できますか? – Produnis

+3

@ Produnisウィスカー行のサイズを変更するには、関数 'stat_boxplot'の中に引数' stat_params = list(width = 0.5) 'を追加します。私の答えにその結果を見てください。 – mpalanco

14

に計算され、保存された様々な値関数内で引数width = 0.5を使用します。stat_boxplot

set.seed(42) 
df <- data.frame(cond = factor(rep(c("A", "B"), each = 500)), 
       value = c(rnorm(500, mean = 1, sd = 0.2), 
          rnorm(500, mean = 1.5, sd = 0.1))) 

library(ggplot2) 
ggplot(df, aes(x = cond, y = value)) + 
     stat_boxplot(geom = "errorbar", width = 0.5) + 
     geom_boxplot() 

enter image description here

+0

これは私にとってはうまくいかないようです。私は 'Error:Unknown parameters:stat_params'を取得します。どのRのバージョンを使用していますか? – Will

+0

@私は答えを修正しました。新しいバージョンのggplo2 2.0.0は、その引数 'stat_params'を受け入れません。今それは動作するはずです。 – mpalanco

+0

すごい、うまくいった!ありがとう! – Will

関連する問題