问题

1
2
3
4
require(ggplot2)
d <- data.frame(x=c(0, 0.002, 0.00575), y = 1:3)
p <- ggplot(d, aes(x, y)) + geom_point() + xlab(NULL) + ylab(NULL)
print(p)

img

x轴最右端的文本0.006最后一个字符有一半过界了。

解决方案

设定xlim

1
p + xlim(NA, 0.0062)

设定scale_x_continuous

1
p + scale_x_continuous(limits = c(0, 0.0062), expand = c(0,0))

在默认设置下,expand对于连续型变量, 会在取值区间的两侧添加5%的范围;对于离散型变量,会在取值区间的两侧添加0.6个单位。

冲突

若同时设置xlim与scale_x_continuous,则后者会覆盖前者的设置。

参考来源

https://guangchuangyu.github.io/cn/2017/04/ggplot2-overflow/