geom_text和分组

0 r ggplot2 geom-text

这是一段ggplot2代码,从样本中绘制一组4个密度:

library('reshape')
library('ggplot2')
data <- matrix(0,5,100)
for(i in seq(1,5,1)){
  data[i,] <- rnorm(100,i,1)
}
df <- data.frame(melt(data))
g <- ggplot(data=df, aes(x=value,group=X1)) + 
  geom_density(fill="blue",alpha=0.5)
g
Run Code Online (Sandbox Code Playgroud)

我想在每个顶部添加密度的"索引".我尝试了很多东西,包括:

g + geom_text(aes(label=X1,y=0.5,group=X1));
Run Code Online (Sandbox Code Playgroud)

哪个不能给我我所期望的但是每个样本的密度指数(因为它忽略了"组"参数).我肯定错过了什么但是什么?

Sve*_*ein 6

问题是:ggplot打印每个数据点的标签.首先需要计算分布的中心:

df2 <- aggregate(value ~ X1, df, function(x) mean(range(x))/2)
Run Code Online (Sandbox Code Playgroud)

这将返回每个X1组的中心.然后,新的数据框,df2可以与geom_text函数一起使用:

ggplot(data = df,aes(x = value, group = X1))+
  geom_density(fill = "blue", alpha = 0.5) +
  geom_text(data = df2, aes(label = X1, y = 0.5))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者,您可以计算密度峰的位置:

df2 <- aggregate(value ~ X1, df, function(x) {
  dens <- density(x)
  return(dens$x[which.max(dens$y)])
})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述