【问题标题】:Colour average lines in ggplotggplot中的颜色平均线
【发布时间】:2016-08-24 16:15:51
【问题描述】:

我想用ggplot用来填充分布的默认调色板的相同颜色为虚线着色,它们是两个各自类别的平均值:

Click here to view the distribution

这是使用的代码:

library(ggplot2)

print(ggplot(dati, aes(x=ECU_fuel_consumption_L_100Km_CF, fill=Model))
  + ggtitle("Fuel Consumption density histogram, by Model")
  + ylab("Density")
  + geom_density(alpha=.3)
  + scale_x_continuous(breaks=pretty(dati$ECU_fuel_consumption_L_100Km_CF, n=10))
  + geom_vline(aes(xintercept = mean(ECU_fuel_consumption_L_100Km_CF[dati$Model == "500X"])), linetype="dashed", size=1)
  + geom_vline(aes(xintercept = mean(ECU_fuel_consumption_L_100Km_CF[dati$Model == "Renegade"])), linetype="dashed", size=1)
)

提前谢谢大家!

【问题讨论】:

    标签: r ggplot2 colors average


    【解决方案1】:

    没有可重现的例子,但你可能想做这样的事情:

    library(dplyr)
    # make up some data
    d <- data.frame(x = c(mtcars$mpg, mtcars$hp),
                    var = rep(c('mpg', 'hp'), each = nrow(mtcars)))
    means <- d %>% group_by(var) %>% summarize(m = mean(x))
    
    ggplot(d, aes(x, fill = var)) +
      geom_density(alpha = 0.3) +
      geom_vline(data = means, aes(xintercept = m, col = var), 
                 linetype = "dashed", size = 1)
    

    这种方法可以扩展到任意数量的组。

    一个不需要预先计算但也更老套的选项是:

    ggplot(d, aes(x, fill = var)) +
      geom_density(alpha = 0.3) +
      geom_vline(aes(col = 'hp', xintercept = x), linetype = "dashed", size = 1,
                 data = data.frame(x = mean(d$x[d$var == 'hp']))) +
      geom_vline(aes(col = 'mpg', xintercept = x), linetype = "dashed", size = 1,
                 data = data.frame(x = mean(d$x[d$var == 'mpg'])))
    

    【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2018-06-09
    • 2016-09-08
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2012-07-28
    相关资源
    最近更新 更多