经过一番搜索,我仍然不满意!
有没有一种简单的方法可以制作一个以原点为起点并清晰显示所有数据的y轴图表呢?
这是我的问题:
set.seed(123)
my.data<- data.frame(x.var = rnorm(100, 50),
y.var = rnorm(100, 50,10))
## Annoying because it doesn't start at origin
ggplot(my.data, aes(x.var, y.var))+
geom_point()
## Annoying because origin is not at bottom
ggplot(my.data, aes(x.var, y.var))+
geom_point()+
expand_limits(y = 0)
## Annoying because point is cut off
ggplot(my.data, aes(x.var, y.var))+
geom_point()+
scale_y_continuous(expand = c(0,0))+
expand_limits(y = 0)
问题“如何在ggplot2(R)中强制原点从0开始”中的最佳答案最后以以下内容结束:
“您可能需要稍微调整一下,以确保点不会被截断。”
为什么会发生这种情况?我可以手动调整轴,但我不想每次都这样做!
互联网上的某个人有一个解决方案,其中涉及…
#Find the current ymax value for upper bound
#(via https://dev59.com/nmsz5IYBdhLWcg3wuKQm#GaWeEYcBWogLw_1btlCn )
gy=ggplot_build(g)$panel$ranges[[1]]$y.range[2]
g=g+ylim(0,gy)
#Handle the overflow by expanding the x-axis
g=g+scale_x_continuous(expand=c(0.1,0))
对于我觉得相对简单的想法来说,这似乎很复杂。我有什么遗漏的吗?
谢谢!
编辑:截至2018年夏季,ggplot更新使上述修复方法不再适用。目前(2018年8月),要从图中获取y-max,您现在需要执行以下操作。
gy = ggplot_build(g)$layout$panel_scales_y[[1]]$range$range[[2]]
ggplot(my.data,aes(x.var,y.var))+ geom_point()+ coord_cartesian(ylim = c(0,1.05 * max(my.data $ y.var)))
。 - rawr