私のデータ範囲は、常に y 軸の一番上のラベルよりも大きいようです。制限を手動で設定せずに自動的に含める方法はありますか?
例えば
ggplot(data.frame(x=1:11, y=c(11:17,5:2)), aes(x,y)) + geom_point()
ラベル 0 と 20 を y 軸に表示し、o と 12 を x 軸に表示したいと思います (それに応じてプロットが拡張されます)。これは、たとえばスケール オプションでこれらの数値を指定しなくても、自動的に行われます。
dat<-data.frame(x=1:10, y=c(11:17,5:3))
ggplot(dat, aes(x,y)) +
geom_point()+
scale_y_continuous(breaks=c(pretty(dat$y, n=4),18), expand=c(0.25, 0.25))
このpretty
関数は、10 の累乗の 1、2、または 5 倍としてナイス ブレークを選択します。次に、そのベクトルに 18 を含めました。
expand
ですから、実際にこれを行う方法はないと思いますexpand_limits
。これは明らかに最も美しいコードではありませんが、これは基本的に、y 軸のラベルがデータを完全に取り囲む、私が探している機能です。
dat<-data.frame(x=1:10, y=c(11:17,5:3))
ggplot(dat, aes(x,y)) +
geom_point() +
expand_limits(y=c(min(pretty(c(dat$y, min(dat$y) * (0.95)))), max(pretty(c(dat$y, max(dat$y) * (1.05))))))
expand default を 0.05 と仮定し、pretty はデフォルトで使用されます。これを行うより良い方法はありますか?
多分引数scale_y_continuous
と:expand
ggplot(data.frame(x=1:10, y=c(11:17,5:3)), aes(x,y)) +
geom_point() +
scale_y_continuous(expand=c(0.5, 0.5))
0.95 * 1.05 乗数をスキップしてみましたか?
expand_limits(y=c(min(pretty(c(dat$y,min(dat$y)))),max(pretty(c(dat$y,max(dat$y))))))