1. ホーム
  2. r

[解決済み】Rで2つのヒストグラムを一緒にプロットする方法は?

2022-04-19 01:52:19

質問

私はRを使用しており、ニンジンとキュウリの2つのデータフレームを持っています。それぞれのデータフレームには、測定されたすべてのニンジン(合計:100k ニンジン)とキュウリ(合計:50k キュウリ)の長さを列挙する単一の数値列があります。

ニンジンの長さとキュウリの長さの2つのヒストグラムを同じプロット上にプロットしたいと思います。これらは重なり合っているので、透明度も必要だと思います。また、各グループのインスタンスの数が異なるので、絶対数ではなく相対度数を使用する必要があります。

このようなものがあればいいのですが、私の2つの表からどのように作成すればいいのかわかりません。

解決方法は?

リンク先の画像は密度曲線用で、ヒストグラムではありません。

ggplotを読んでいるのであれば、2つのデータフレームを1つの長いフレームに結合することだけが、あなたに欠けていることかもしれません。

では、まず今あるような、2つの別々のデータセットを組み合わせてみましょう。

carrots <- data.frame(length = rnorm(100000, 6, 2))
cukes <- data.frame(length = rnorm(50000, 7, 2.5))

# Now, combine your two dataframes into one.  
# First make a new column in each that will be 
# a variable to identify where they came from later.
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'

# and combine into your new data frame vegLengths
vegLengths <- rbind(carrots, cukes)

この後は、データがすでに長い形式である場合は不要ですが、プロットを作成するために必要なのは1行だけです。

ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.2)

<イグ

さて,本当にヒストグラムが欲しい場合は,次のようにすればよいでしょう.デフォルトの引数 "stack" から位置を変更する必要があることに注意してください。データがどのようなものであるべきかという考えがない場合、これを見落とすかもしれません。アルファ値を高くすることで、より見栄えが良くなります。また、密度ヒストグラムを作成したことにも注意してください。を削除するのは簡単です。 y = ..density.. でカウントに戻すことができます。

ggplot(vegLengths, aes(length, fill = veg)) + 
   geom_histogram(alpha = 0.5, aes(y = ..density..), position = 'identity')

<イグ