データを削除せずにggplot2軸を制限する(制限外):ズーム


106

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)

回答:


168

Hadleyはこれを99ページで説明しています。彼のggplot2ブックの 133 (第1版)、または第2版がある場合はpp。160-161

問題は、あなたが言う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))

ここに画像の説明を入力してください


2
私が使用しているためcoord_cartesianがオプションでない場合はどうなりますgeom_boxplotか?
Everettss 2017

3
coord_cartesiangeom_boxplotまたは他のgeomのオプションです。
eipi10

はい、しかし、それは必要でありcoord_flip、2つの座標を持つことができないので、水平箱ひげ図を行う方法を理解できません。
jtr13 2018年

2
その場合のcoord_flip代わりに、ylimをin に設定できますcoord_cartesian
jtr13 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.