我的数据范围似乎总是比在y轴的顶部标签更大。 有没有一种方法可以让我自动包括它无需手动设置限制?
例如,在
ggplot(data.frame(x=1:11, y=c(11:17,5:2)), aes(x,y)) + geom_point()
我想有标签0和20出现在y轴和o及12出现在x轴(和积相应地扩大)。 这应该没有自动在例如缩放选项,指定这些数字来完成。
我的数据范围似乎总是比在y轴的顶部标签更大。 有没有一种方法可以让我自动包括它无需手动设置限制?
例如,在
ggplot(data.frame(x=1:11, y=c(11:17,5:2)), aes(x,y)) + geom_point()
我想有标签0和20出现在y轴和o及12出现在x轴(和积相应地扩大)。 这应该没有自动在例如缩放选项,指定这些数字来完成。
怎么样以下解决方案:
library(ggplot2)
d <- data.frame(x=1:11, y=c(11:17,5:2))
px <- pretty(d$x)
py <- pretty(d$y)
ggplot(d, aes(x,y)) + geom_point() +
scale_x_continuous(breaks=px, limits=range(px)) +
scale_y_continuous(breaks=py, limits=range(px))
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
功能选择好的场所为1,2或5倍的10的功率然后我包括18到该载体中。
也许与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))
因此,我不认为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))))))
我认为扩大默认为0.05和漂亮是使用默认值。 有一个更好的方法吗?
您是否尝试过跳过0.95 * 1.05乘数?
expand_limits(y=c(min(pretty(c(dat$y,min(dat$y)))),max(pretty(c(dat$y,max(dat$y))))))