ggplot中的颜色平均线

时间:2016-08-24 16:15:52

标签: r ggplot2 colors average

我想为虚线添加颜色,这两个颜色是两个相应类别的平均值,使用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)
)

提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

没有可重复的示例,但您可能希望执行以下操作:

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'])))