1. ホーム
  2. r

[解決済み] データを削除せずに ggplot2 の軸を制限する (制限外): zoom

2022-07-04 11:41:32

質問

ggplotで軸の限界を指定すると、外れた点が削除されます。 これは点の場合は良いのですが、指定した範囲と交差する線をプロットしたい場合がありますが、ggplotの range または xlim/ylim メソッドはこれらを削除します。 外れたデータを削除することなくプロット軸の範囲を指定する他の方法はありますか?

例えば

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)

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

Hadleyはこのことを、彼の著作の99; 133ページで説明しています。 ggplot2 book (1st edition)の99, 133ページで説明されています。 の99; 133ページで、あるいはpp. 160 - 161 で説明しています。 第2版 .

問題は、おっしゃるように limits の内部で、スケールや設定 ylim() を使用すると、データを拘束しているため、データが捨てられてしまいます。 真のズーム (すべてのデータを保持) を行うには、デカルト座標系 (または他の座標系 https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ). 詳しくは http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))

<イグ