2016-08-30 9 views
1

geom_barプロットにエラーバーをプロットしたいと思います。あなたはaes(ymax、ymin)を調整して、上または下のバーだけを表示できることを知っています。geom_errorbarは正の平均を表し、負の平均を下げる

しかし、私はそれぞれエラーバーを表示したい負と正の平均値を持っています。ここで

は、彼らがmean_newを条件としているように、あなたが限界を再定義することができ

library(ggplot)  
myData <- aggregate(mtcars$mpg, 
         by = list(cyl = mtcars$cyl, gears = mtcars$gear), 
         FUN = function(x) c(mean = mean(x), sd = sd(x), 
              n = length(x))) 
    myData <- do.call(data.frame, myData) 
    myData$se <- myData$x.sd/sqrt(myData$x.n) 

colnames(myData) <- c("cyl", "gears", "mean", "sd", "n", "se") 
myData$names <- c(paste(myData$cyl, "cyl /", 
         myData$gears, " gear")) 

myData$sign <- c(1, -1, 1, 1, -1, 1, -1, 1) 

myDataN <- mutate(myData, mean_new = mean*sign, se_new=se+30) 
dodge <- position_dodge(width = 0.9) 
limits <- aes(
       ymax = myDataN$mean_new + myDataN$se_new, 
       ymin = myDataN$mean_new - myDataN$se_new) 
        #ymax = myDataN$mean_new, #for upper 
        #ymin = myDataN$mean_new) #for lower 


p <- ggplot(data = myDataN, aes(x = names, y = mean_new, fill = names)) 

p + geom_bar(stat = "identity", position = dodge) + 
    geom_errorbar(limits, position = dodge, width = 0.25) + 
    theme(axis.text.x=element_blank(), axis.ticks.x=element_blank(), 
     axis.title.x=element_blank()) 

おかげ -deep

答えて

2

と遊ぶためにいくつかのサンプルコードやデータである(それが正であるかどうか)負:

01:上記の定義を考えると

limits <- aes(
    ymax = myDataN$mean_new + (myDataN$mean_new > 0)*myDataN$se_new, 
    ymin = myDataN$mean_new - (myDataN$mean_new < 0)*myDataN$se_new) 

は、次のプロットを取得

enter image description here

バーに触れるウィスカーを取り除くとよい場合があります。しかし、私は現時点でこれを行う方法を理解することができません。

+1

ありがとうございました!これが機能し、バーの周りにブラックボックスが作成され、より均一に見えるようになりました。 geom_bar(stat = "identity"、color = "black"、position = dodge) – Deep