2016-08-24 165 views
2

我想着色虚线,它们是两个相应的类别的平均值,具有相同的颜色由ggplot使用默认调色板的填充分布:颜色平均线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) 
) 

谢谢大家提前!

回答

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

谢谢你,第二个选项运作良好;但我不得不删除一个额外的传说出现[如何关闭一些传说](http://stackoverflow.com/questions/14604435/turning-off-some-legends-in-a-ggplot) –