【问题标题】:aes(group = ...) with stat_summary, crazy lines带有 stat_summary 的 aes(group = ...),疯狂的线条
【发布时间】:2020-11-13 00:22:31
【问题描述】:

我正在尝试在我的情节中添加一条连接线,类似这样(这是在已经计算并直接绘制静态数据的情况下完成的):

mydata <- structure(list(`Rango edad` = structure(c(3L, 3L, 3L, 4L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("18-30", 
"31-55", "56-70", ">70"), class = "factor"), value = c(8.25, 
3.26, 1.07, 2.16, 3.25, 2.63, 3.66, 2.12, 1.83, 4.04, 0.36, 5.74, 
1.45, 1.73, 1.76, 3.25, 2.2, 2.45, 0.8, 1.5, 0.5, 0.54, 3.45, 
1.34, 3.97, 0.43, 1.52, 2.14, 1.55, 2.45, 0.58, 1.2, 0.46, 5.9, 
1.08, 1.28)), row.names = c(NA, 36L), class = "data.frame")

dfma <- aggregate(value ~ `Rango edad`, mydata, FUN = mean)
dfma$up <- dfma$value + (aggregate(value ~ `Rango edad` , dfm, FUN = mad)$value)
dfma$low <- dfma$value - (aggregate(value ~ `Rango edad` , dfm, FUN = mad)$value)

ggplot(dfma, aes(`Rango edad`, value,color = `Rango edad`)) +
  geom_line(aes(group = 1), color = "black") + geom_point(size = 5) +
  geom_errorbar(aes(ymax = up, ymin = low), width = .25)

当我通过stat_summary 计算这些统计数据时,连接线变得疯狂......

ggplot(mydata, aes(`Rango edad`, value, color = `Rango edad`)) + 
  geom_line(aes(group = 1)) + 
  stat_summary(aes(`Rango edad`, value), geom ="point", show.legend = F, fun = mean, size = 5) +
  stat_summary(aes(`Rango edad`, value), geom ="linerange", show.legend = F, fun = mean,
               fun.min = function(y) mean(y) - sd(y), fun.max = function(y) mean(y) + sd(y))

...我知道问题出在aes(group = ...),但我无法以任何方式解决它。任何想法?谢谢!

【问题讨论】:

    标签: r ggplot2 statistics aes


    【解决方案1】:

    您只想连接点,而不是其他所有内容,因此如果您使用类似于绘制这些点的方法,它会起作用:

    ggplot(mydata, aes(`Rango edad`, value, color = `Rango edad`)) + 
      stat_summary(aes(group = 1), geom = "line", show.legend = F, fun = mean, color = "black") + 
      stat_summary(aes(`Rango edad`, value), geom ="point", show.legend = F, fun = mean, size = 5) +
      stat_summary(aes(`Rango edad`, value), geom ="linerange", show.legend = F, fun = mean,
                   fun.min = function(y) mean(y) - sd(y), fun.max = function(y) mean(y) + sd(y))
    

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 2021-06-06
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多