限制 ggplot2轴而不删除数据(外部限制) : 缩放

如果在 ggplot 中指定轴限制,则删除外围点。这对于点来说很好,但是您可能希望绘制与指定范围相交的线,但是 ggplot 的 rangexlim/ylim方法删除了这些线。是否有另一种方法指定图轴范围而不删除外围数据?

例如:。

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)
82231 次浏览

哈德利在他的 Ggplot2书(第一版)的第99页,第133页,或者如果你有 第二版的话,第160-161页解释了这一点。

问题在于,正如您所说的,规模内的 limits或设置 ylim()会导致数据被丢弃,因为它们正在约束数据。为了实现真正的变焦(保存所有数据) ,你需要设置笛卡儿坐标系(或者其他坐标系 https://ggplot2.tidyverse.org/reference/#section-coordinate-systems)的内部限制。有关更多信息,请参见: http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) +
geom_line() +
coord_cartesian(ylim=c(0, 7))

enter image description here