【问题标题】:geom_errorbar upper for positive mean and lower for negative meangeom_errorbar 上为正平均值,下为负平均值
【发布时间】:2017-01-07 08:58:49
【问题描述】:

我想在我的 geom_bar 图上绘制误差线。我知道您可以调整 aes(ymax, ymin) 以仅显示上条或仅显示下条。

但是,我有一些负和正的平均值,我想分别显示误差线。

这里有一些示例代码和数据可供使用

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())

谢谢 -深

【问题讨论】:

    标签: r plot ggplot2 geom-bar


    【解决方案1】:

    您可以重新定义限制,使其以 mean_new 为条件(无论是正数还是负数):

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

    根据上述定义,您会得到以下图:

    去除与条形接触的晶须可能会很好。但是,我目前无法弄清楚如何执行此操作。

    【讨论】:

    • 非常感谢!这很有效,我在条形周围创建了一个黑框,使它们看起来更统一。 geom_bar(stat = "identity", color = "black", position = dodge)
    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2015-01-13
    • 2012-06-19
    相关资源
    最近更新 更多