質問

ggplot2を使って次のヒストグラム密度プロットを作成したいです。「通常の」方法(ベースパッケージ)では、本当に簡単です。

set.seed(46)
vector <- rnorm(500)  
breaks <- quantile(vector,seq(0,1,by=0.1))
labels = 1:(length(breaks)-1)
den = density(vector)
hist(df$vector,
     breaks=breaks,
     col=rainbow(length(breaks)),
     probability=TRUE)
lines(den)
.

ENTER IMENTDESCRUシストを入力

GGPLOTで私はこれまでにこれまでに達しました:

seg <- cut(vector,breaks,
           labels=labels,
           include.lowest = TRUE, right = TRUE)
df = data.frame(vector=vector,seg=seg)

ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                        y=..density..,
                        fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
.

しかし、「Y」スケールは間違った寸法を持ちます。次回の実行は "y"スケールを右に取得します。

 ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                    y=..density..,
                    fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
.

私はそれを理解していません。y=..density..はそこにありますが、それは高さであるべきです。それで、なぜ私のスケールが私がそれを記入しようとすると私のスケールが修正されますか?

色が必要です。既定のGGplot Fill Colorsに従って、ブレークと各ブロックの色が一方向に設定されているヒストグラムが必要です。

役に立ちましたか?

解決

手動で、パーセンタイルバーに色を追加しました。これがあなたのために働くかどうかを確認してください。

library(ggplot2)

ggplot(df, aes(x=vector)) +   
   geom_histogram(breaks=breaks,aes(y=..density..),colour="black",fill=c("red","orange","yellow","lightgreen","green","darkgreen","blue","darkblue","purple","pink")) + 
   geom_density(aes(y=..density..)) +
   scale_x_continuous(breaks=c(-3,-2,-1,0,1,2,3)) +
   ylab("Density") + xlab("df$vector") + ggtitle("Histogram of df$vector") +
   theme_bw() + theme(plot.title=element_text(size=20),
                      axis.title.y=element_text(size = 16, vjust=+0.2),
                      axis.title.x=element_text(size = 16, vjust=-0.2),
                      axis.text.y=element_text(size = 14),
                      axis.text.x=element_text(size = 14),
                      panel.grid.major = element_blank(),
                      panel.grid.minor = element_blank())
.

Enter Image説明

他のヒント

fill=segはグループ化をもたらします。あなたは実際にはsegの値ごとに異なるヒストグラムを取得しています。色が必要ない場合は、これを使用できます。

ggplot(df) + 
  geom_histogram(breaks=breaks,aes(x=vector,y=..density..), position="identity") + 
  geom_density(aes(x=vector,y=..density..))
.

画像の入力ここにある

色が必要な場合は、GGPLOT2以外の濃度値を計算するのが最も簡単かもしれません。

y-axisの解釈に関する混乱は、密度がカウントではなくプロットされている可能性があります。したがって、y-axisの値は全サンプルの比率であり、ここでバーの合計は1 に等しい。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top