2011-11-23 19 views
8

この例はそれほど大きくはないが、ポイントを強調表示していることを謝ります。私が何をしたいかgeom_smooth() - スムージングからデータを失ってy軸をスケーリングする

mtcars$tran <- factor(mtcars$am, labels=c("Man","Aut")) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) + geom_smooth(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) + scale_y_continuous(limits=c(12,60)) 

を平滑化曲線が、y軸のスケールを制限することにより、「ズームイン」を描くです。しかし、ggplotは、平滑化された曲線が何であるかを調べる際に、スケールの範囲外のデータを除外しているようです。はい、これは理にかなっていますが、私は何を見たいのでしょうか?私の実際のデータでは、(生の)yの値は5〜14の範囲ですが、滑らかな曲線は完全に7と9の間にあります。そのため、上部には空きスペースがたくさんあります。私はそれをc(7,9)に設定すると、もはや滑らかな曲線を計算するためにその範囲外の点を使用しないので、私は別の曲線を得ます。

私はデータでは提供できませんが、この例ではこれを見ることができます。最後のプロットでは、2つの点が削除され、 'マン'曲線の後半は元のグラフと同じではありません。

質問

scale_y_continuousは、平滑化曲線(論理)を構築するために使用されているデータ値を制限する方法は、すべてのデータを使用して曲線を描くことができ、その上にし、「ズーム」の場合(WRT y軸)。

それが明確でない場合は教えてください。

おかげ

+0

geom_smooth'クリスマス/新周りにあるべきである(次のバージョンでは、私が理解から、変更する予定です 'のデフォルトのズーム年)。ここを参照してください:http://stackoverflow.com/questions/7857020/ggplot2-zooming-in-on-geom-smooth-automatically-using-coord-cartesian –

答えて

13

利用coord_cartesian代わりのscale_y_continuous

ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + 
geom_smooth(aes(colour=tran)) + 
coord_cartesian(ylim = c(12,60)) 
+0

華麗なta!常に方法、ちょうど見るべき場所を知っていなければなりません。 – nzcoops

関連する問題