2016-07-11 11 views
1

私は2つの集団のデータを持っています。 私は同じグラフィック上に両方のヒストグラムと密度プロットを取得したいと思います。 1つの母集団に対して1つの色を使用し、もう1つの母集団に別の色を使用します。R:グループ別の濃度プロット?

私はこの(例)を試してみた:

library(ggplot2) 
AA <- rnorm(100000, 70,20) 
BB <- rnorm(100000,120,20) 

valores <- c(AA,BB) 
grupo <- c(rep("AA", 100000),c(rep("BB", 100000))) 
todo <- data.frame(valores, grupo) 


ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) + 
    geom_histogram(aes(y=..density..), binwidth=3)+ geom_density(aes(color=grupo)) 

しかし、私はちょうど一行と単一色でグラフィックを取得しています。 enter image description here

2つの濃度ラインに異なる色を使用したいと思います。可能であれば、ヒストグラムも同様です。

私はggplot2でやったことがありますが、ベースRもOKです。

または私が変更したのか分からないし、今、私はこれを得る:

ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) + 
geom_histogram(position="identity", binwidth=3, alpha=0.5)+ 
geom_density(aes(color=grupo)) 

が、密度のラインがプロットされませんでした。 enter image description here

または enter image description here

答えて

2

私はこのggplot2ソリューションを提案:

ggplot(todo, aes(valores, color=grupo)) + 
    geom_histogram(position="identity", binwidth=3, aes(y=..density.., fill=grupo), alpha=0.5) + 
    geom_density() 

enter image description here

@skan:あなたの試みは近かったが、あなたが代わりにヒストグラムの濃度値の頻度をプロットしました。

+0

2番目のプロットのようにヒストグラムをアルファで見るのはどうですか? – skan

+0

ありがとうございます。私はいつも、aes()引数をどこに置くか、ggplotの中か他の用語の中に混同します。今、どのように濃い線を太くすることができますか? – skan

+0

最後に、stat_function(fun = dnorm .....)のプロットを追加して、手段の正規分布についての情報を追加したいのであれば....適切なyスケーリングを得る方法? – skan

1

のようにも奇妙なことは、基本Rソリューションは次のようになります。

hist(AA, probability = T, col = rgb(1,0,0,0.5), border = rgb(1,0,0,1), 
     xlim=range(AA,BB), breaks= 50, ylim=c(0,0.025), main="AA and BB", xlab = "") 
    hist(BB, probability = T, col = rgb(0,0,1,0.5), border = rgb(0,0,1,1), add=T) 
    lines(density(AA)) 
    lines(density(BB), lty=2) 

私はrgbを使用アルファについて。しかし、それを入手するにはもっと多くの方法があります。たとえば、scalesパッケージのalpha()を参照してください。 BBグループと比較してビン幅を広げるために、AAsのプロットのbreaksパラメータも追加しました。

enter image description here

+0

ヒストグラムをアルファで表示すると、2番目のプロットと同様に線が重ねられます – skan

+1

@skan私の編集を参照してください。 – Jimbou

関連する問題