r-在ggplot中显示组平均值图例



我设法创建了按颜色分隔的重叠密度图,图例位于具有相应分组/颜色的图形外部。每个密度图都用垂直虚线显示平均值。我还想在图形内部的图例中显示由相同颜色关联的每个平均值的对应值(如果可能的话(。

我调整了mtcars,以便能够展示我想做的事情。

df2 <-mtcars
df2 <- df2 %>% add_column(Cyl =
case_when(df2$cyl == 6 ~ "Six", 
df2$cyl == 8 ~ "Eight",
df2$cyl == 4 ~ "Four"), .after = "cyl")
mu_hp_cyl<- ddply(df2, "Cyl", summarise, grp.mean=mean(hp)) 
head(mu_hp_cyl)
hp_cyl<-ggplot(df2, aes(x=hp, color=Cyl)) +
geom_density()+
geom_vline(data=mu_hp_cyl, aes(xintercept=grp.mean, color=Cyl),
linetype="dashed") +
labs(x = 'Hp by Cylinder', y = 'Density')
hp_cyl

我试着用geom_text单独添加每个平均值,但值太大了。我还尝试将我创建的变量";CCD_ 3";,但我得到一个错误,说值需要是1或数据的总长度。

我已经加载了一些包,我相信这需要ggplot2dplyr

感谢您的帮助!

p.s.第一次发布,对格式上的任何错误表示歉意。

类似这样的东西:

library(dplyr)
library(tibble)
library(ggplot2)
df2 <-mtcars
df2 <- df2 %>% add_column(Cyl =
case_when(df2$cyl == 6 ~ "Six", 
df2$cyl == 8 ~ "Eight",
df2$cyl == 4 ~ "Four"), .after = "cyl")
mu_hp_cyl<- plyr::ddply(df2, "Cyl", summarise, grp.mean=mean(hp)) 
# head(mu_hp_cyl)
hp_cyl<-ggplot(df2, aes(x=hp, color=Cyl)) +
geom_density()+
geom_vline(data=mu_hp_cyl, aes(xintercept=grp.mean, color=Cyl),
linetype="dashed") +
labs(x = 'Hp by Cylinder', y = 'Density')
hp_cyl + geom_text(data = mu_hp_cyl,
aes(grp.mean, 0.03, 
label = paste0("Mean: ", round(grp.mean, 2))),
angle = 90, vjust = 1.5)

最新更新