web-dev-qa-db-ja.com

Ggplot2のRプロットで軸の範囲を設定するにはどうすればいいですか?

私は以下をプロットします。

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

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

今、私は範囲全体ではなく、x=-5000から5000の間の領域だけをプロットしたいとします。

どうやってやるの?

318
David B

基本的に2つの選択肢があります

scale_x_continuous(limits = c(-5000, 5000))

または

coord_cartesian(xlim = c(-5000, 5000)) 

1つ目は与えられた範囲外のすべてのデータポイントを削除し、2つ目は可視領域のみを調整します。ほとんどの場合、違いはわかりませんが、データに何かを当てはめれば、おそらく当てはめられた値が変わるでしょう。

省略形の関数xlim(またはylim)を使用することもできます。これは、最初のオプションと同様に、指定された範囲外のデータポイントを削除します。

+ xlim(-5000, 5000)

詳細については、 coord_cartesian の説明を確認してください。

ggplot2RStudioチートシート は、これを視覚的にはっきりさせます。これがそのチートシートのごく一部です。

enter image description here

CC BY の下に配布されます。

539
midtiby

クイックノート:coord_flip()を使ってx軸とy軸を反転する場合、これら2つの関数は排他的なので、coord_cartesian()を使って範囲制限を設定することはできません( here を参照)。

幸い、これは簡単な修正です。以下のようにcoord_flip()内に制限を設定します。

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

これは可視範囲を変更するだけです(つまりデータポイントは削除されません)。

31
Bill