11

私のデータ範囲は、常に y 軸の一番上のラベルよりも大きいようです。制限を手動で設定せずに自動的に含める方法はありますか?

例えば

ggplot(data.frame(x=1:11, y=c(11:17,5:2)), aes(x,y)) + geom_point()

ラベル 0 と 20 を y 軸に表示し、o と 12 を x 軸に表示したいと思います (それに応じてプロットが拡張されます)。これは、たとえばスケール オプションでこれらの数値を指定しなくても、自動的に行われます。

ここに画像の説明を入力

4

5 に答える 5

10
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))

ggplotのかなりの休憩

このpretty関数は、10 の累乗の 1、2、または 5 倍としてナイス ブレークを選択します。次に、そのベクトルに 18 を含めました。

于 2012-07-11T07:46:28.033 に答える
3

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 はデフォルトで使用されます。これを行うより良い方法はありますか?

于 2012-07-12T06:17:32.223 に答える
3

多分引数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))
于 2012-07-11T07:11:19.667 に答える
0

0.95 * 1.05 乗数をスキップしてみましたか?

expand_limits(y=c(min(pretty(c(dat$y,min(dat$y)))),max(pretty(c(dat$y,max(dat$y))))))
于 2016-03-28T22:03:30.527 に答える