2014-01-11 8 views
8

次のヒストグラム密度プロットをggplot2で作成します。 "正常な" 方法(基本パッケージ)で本当に簡単です:ggplotで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 image description here

は、私がこれまでに達している:

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塗りつぶしの色に従って方向を定められるヒストグラムがほしいです。

+0

コードがページに収まらなるように、私はあなたの投稿を編集しました。最大限の可読性と有用性をコードする方法に関するGoogleの提案に興味があるかもしれません。http://google-styleguide.googlecode.com/svn/trunk/Rguide.xml –

答えて

8

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

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 description here

+1

ありがとう、私は代替ソリューションを探していたが、私はあなたと結んでしまった。 – Usobi

1

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

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

enter image description here

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

+0

を参照してください。高さは依然として間違いでしょうか? – Usobi

+0

申し訳ありませんが、私はあなたのコメントを理解していません。 – Roland

関連する問題