ggplotの制限の下限のみを設定します


82

連続スケールの制限の下限のみを設定することは可能ですか?上限を指定せずに、すべてのプロットを0ベースにしたい。

例えば

+ scale_y_continuous(minlim=0)

回答:


118

使用できます expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

2つの比較は次のとおりです。

  • なし expand_limits

  • expand_limits

のバージョン1.0.0ggplot2以降、指定できる制限は1つだけで、もう1つは、2番目の制限をに設定することで通常決定されるようになりますNA。このアプローチにより、軸範囲の拡張と切り捨ての両方が可能になります。

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

経由で指定するとylim(c(0, NA))、同じ図になります。


@PatrickT stackoverflow.com/q/27028825/892313へのコメントとしてそれを意味しましたか?
Brian Diggs 2014

まさに私が探していたもの。ありがとう
Veera 2017

12

次のように、を使用するのaes(ymin=0)はどうですか。

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
これは、geom_errorbarなどのyminをオーバーライドします。expand_limits()の方が安全なようです。
マーク

これは普遍的ではありません、geom_densityそれが私に与えるError: stat_bin() must not be used with a y aestheticか、または中に置かれたgeom_densityときWarning: Ignoring unknown aesthetics: ymin(後者は完全に期待されています)
PatrickT 2017年

7

次のコードを試すこともできます。これにより、最小y軸がゼロになり、x軸と最小y値の間に余分なギャップがなくなります。

scale_y_continuous(limits = c(0, NA), expand = c(0,0))

1
coord_cartesian()代わりにこれを行う方法はありますか?
ランディ

-1

これを直接行うことはできないと思います。ただし、回避策として、ggplot2が上限を決定する方法を模倣できます。

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.