51

boxplot関数が自動的に与えるように、ひげの端に垂線を入れたいと思います。

4

3 に答える 3

67

示唆されているが@Rolandによって実装されていないため、stat_boxplotこれを実装するために使用できます。2 回呼び出すコツは、呼び出しの 1 つにto_boxplotを設定することです。geomerrorbar

Rペンと紙のアプローチを使用するため、最初にエラーバーを実装し、その上に従来の箱ひげ図を描くことをお勧めします。

@Roland のダミーデータを使用するdf

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

ここに画像の説明を入力

stat_boxplot( )のヘルプには?stat_boxplot、計算されて保存されたさまざまな値が詳しく説明されていますdata.frame

于 2012-10-21T22:58:36.260 に答える
8

stat_boxplotひげの先端を計算するために使用できるかもしれませんが、私は十分なggplot2ウィザードではないので、base 関数を使用します。

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

ウィスカーの端が水平の箱ひげ図

于 2012-10-21T09:13:55.380 に答える