小编c0b*_*bra的帖子

使用 geom_bar 和 stat="identity" 绘制平均值的 hline

我有一个条形图,其中确切的条形高度位于数据框中。

df <- data.frame(x=LETTERS[1:6], y=c(1:6, 1:6 + 1), g=rep(x = c("a", "b"), each=6))

ggplot(df, aes(x=x, y=y, fill=g, group=g)) + 
  geom_bar(stat="identity", position="dodge")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我想添加两条显示每组所有条形图平均值的 hlines。我所得到的一切

ggplot(df, aes(x=x, y=y, fill=g, group=g)) + 
  geom_bar(stat="identity", position="dodge") +
  stat_summary(fun.y=mean, aes(yintercept=..y.., group=g), geom="hline")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

由于我也想对任意数量的组执行此操作,因此我希望仅使用 ggplot 提供解决方案。

我想避免这样的解决方案,因为它不完全依赖于传递给 ggplot 的数据集,具有冗余代码并且组数不灵活:

ggplot(df, aes(x=x, y=y, fill=g, group=g)) + 
  geom_bar(stat="identity", position="dodge") +
  geom_hline(yintercept=mean(df$y[df$g=="a"]), col="red") +
  geom_hline(yintercept=mean(df$y[df$g=="b"]), col="green")
Run Code Online (Sandbox Code Playgroud)

提前致谢!

编辑:

  • 添加的数据集
  • 对结果代码进行评论
  • 更改数据和图表以澄清问题

r mean ggplot2 geom-bar

5
推荐指数
1
解决办法
2583
查看次数

geom_smooth比nls单独给出不同的拟合

因为我想分别使用nls模型,所以我对geom_smooth函数和ggplot外部的数据做了拟合:

library(ggplot2)
set.seed(1)
data <- data.frame(x=rnorm(100))
a <- 4
b <- -2
data$y <- with(data, exp(a + b * x) + rnorm(100) + 100)
mod <- nls(formula = y ~ (exp(a + b * x)), data = data, start = list(a = a, b = b))
data$fit <- predict(mod, newdata=data)

plot <- ggplot(data, aes(x=x, y=y)) + 
    geom_point() + 
    geom_smooth(method = "nls", colour = "red", formula=y ~ exp(a + b * x),
                method.args = list(start = c(a = a, b = …
Run Code Online (Sandbox Code Playgroud)

r nls ggplot2

3
推荐指数
1
解决办法
186
查看次数

标签 统计

ggplot2 ×2

r ×2

geom-bar ×1

mean ×1

nls ×1