我想总是从原点的第一个轴刻度开始,例如这张图片:
玩xlim
,expand_limits
或scale_x_continuous
并没有真正的作用-第一轴刻度和原点之间总是有很小的间隔。应该有一个简单的方法可以做到这一点。预先非常感谢。
答案 0 :(得分:1)
不幸的是,ggplot2
设置为展开轴并因此填充轴刻度,并且没有简单的功能来强制它们在原点处齐平。我发现获取轴刻度的最佳方法是使用coord_cartesian()
关闭轴扩展并手动指定限制
require(ggplot2)
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
theme_classic() +
coord_cartesian(expand = FALSE, #turn off axis expansion (padding)
xlim = c(1, 6), ylim = c(10, 35)) #manually set limits
我更喜欢在coord_cartesian()
中定义限制,而不是在scale_y_...()
和scale_x_...()
中定义限制,因为coord_cartesian()
会裁剪视图,但不会更改基础数据。 scale...()
函数会删除超出限制的数据,如果裁剪出异常值,可能会弄乱拟合线(stat_smooth()
)或摘要统计信息。
答案 1 :(得分:0)
对我有用的解决方案是将选项expand=c(0,0)
与限制选项一起设置,例如:
scale_y_continuous(expand = c(0, 0), limits = c(10,NA))
然后,Y轴从带有标签10
的第一个刻度开始于原点。