0

サンプルから 4 つの密度のセットをプロットする ggplot2 コードの一部を次に示します。

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

それぞれの上部に密度の「インデックス」を追加したいと思います。私は次のような多くのことを試しました:

g + geom_text(aes(label=X1,y=0.5,group=X1));

これは、私が期待するものではなく、各サンプルの密度のインデックスを提供します(「グループ」引数を無視していたため)。私は確かに何かが欠けていますが、何ですか?

4

1 に答える 1

6

問題はggplot、各データ ポイントのラベルを出力することです。最初に分布の中心を計算する必要があります。

df2 <- aggregate(value ~ X1, df, function(x) mean(range(x))/2)

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

ここに画像の説明を入力

または、密度のピークの位置を計算することもできます。

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

ここに画像の説明を入力

于 2013-02-19T15:07:47.300 に答える