1. ホーム
  2. r

[解決済み] Rでggplot2を使ってヒストグラムを重ね合わせる

2022-05-15 14:19:39

質問

私は R の初心者で、3 つのヒストグラムを同じグラフにプロットしようとしています。 すべてうまくいきましたが、私の問題は、2つのヒストグラムが重なっているところが見えないことです - 彼らはむしろ切断されたように見えます。

密度プロットを作成すると、完璧に見えます。各曲線は黒い枠線で囲まれ、曲線が重なるところでは色が違って見えます。

誰か、1 枚目の写真のヒストグラムで似たようなことができるかどうか教えていただけませんか。これは、私が使用しているコードです。

lowf0 <-read.csv (....)
mediumf0 <-read.csv (....)
highf0 <-read.csv(....)
lowf0$utt<-'low f0'
mediumf0$utt<-'medium f0'
highf0$utt<-'high f0'
histogram<-rbind(lowf0,mediumf0,highf0)
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)

どのように解決するのですか?

あなたの現在のコード。

ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)

ggplot を構成するために 一つ の全ての値を用いてヒストグラムを作成します。 f0 のすべての値を使って、1つのヒストグラムを作成し、このヒストグラムのバーを、変数 utt .

代わりにしたいことは、3つの別々のヒストグラムをアルファブレンディングで作成し、それらが互いに見えるようにすることです。そのため、3つの別々の geom_histogram を呼び出すことで、それぞれが独自のデータフレームとフィルを取得します。

ggplot(histogram, aes(f0)) + 
    geom_histogram(data = lowf0, fill = "red", alpha = 0.2) + 
    geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) +
    geom_histogram(data = highf0, fill = "green", alpha = 0.2) +

以下は具体的な例で、出力もあります。

dat <- data.frame(xx = c(runif(100,20,50),runif(100,40,80),runif(100,0,30)),yy = rep(letters[1:3],each = 100))

ggplot(dat,aes(x=xx)) + 
    geom_histogram(data=subset(dat,yy == 'a'),fill = "red", alpha = 0.2) +
    geom_histogram(data=subset(dat,yy == 'b'),fill = "blue", alpha = 0.2) +
    geom_histogram(data=subset(dat,yy == 'c'),fill = "green", alpha = 0.2)

とすると、次のようなものが生成されます。

typos を修正するために編集されました;あなたは色ではなく、塗りつぶしを望んでいました。