gpt4 book ai didi

r - geom_errorbar 上为正均值,下为负均值

转载 作者:行者123 更新时间:2023-12-04 19:43:40 31 4
gpt4 key购买 nike

我想在我的 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())

谢谢
-深的

最佳答案

您可以重新定义限制,以便它们以 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)

鉴于上述定义,您将得到以下图:

enter image description here

最好去除接触棒的晶须。但是,我目前无法弄清楚如何做到这一点。

关于r - geom_errorbar 上为正均值,下为负均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238259/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com