设置ggplot限制的下限


81

是否可以仅设置连续刻度极限的下限?我想使所有图都基于0,而无需指定上限。

例如

+ scale_y_continuous(minlim=0)

Answers:


116

您可以使用 expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

这是两者的比较:

  • 没有 expand_limits

  • expand_limits

从1.0.0版开始ggplot2,您只能指定一个限制,而另一限制应与通常将第二个限制设置为来确定NA。这种方法将允许扩展和截断轴范围。

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

通过指定它ylim(c(0, NA))给出一个相同的数字。


@PatrickT您的意思是作为对stackoverflow.com/q/27028825/892313的评论吗?
Brian Diggs 2014年

正是我想要的。谢谢
Veera

12

如何使用aes(ymin=0),如:

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
这会覆盖geom_errorbar等的ymin;等等。expand_limits()似乎更安全。
2012年

这不是普遍的,因为geom_density它给了我一个Error: stat_bin() must not be used with a y aesthetic或放置在内geom_densityWarning: Ignoring unknown aesthetics: ymin(后者完全可以预期)
PatrickT

7

您也可以尝试以下代码,该代码将使y轴的最小值为零,并且在x轴和y值之间没有多余的距离。

scale_y_continuous(limits = c(0, NA), expand = c(0,0))

1
有办法coord_cartesian()代替它吗?
兰迪

-1

我认为您无法直接执行此操作。但是,作为一种变通办法,您可以模仿ggplot2确定上限的方式:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.