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

geo*_*ory 89 limits r zoom 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)
Run Code Online (Sandbox Code Playgroud)

Tyl*_*ker 141

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

问题在于,正如您所说limits,在比例或设置中ylim()导致数据被丢弃,因为它们限制了数据.要进行真正的缩放(保留所有数据),需要在笛卡尔坐标系内设置限制.有关更多信息,请参阅:http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • `coord_cartesian`仍然是`geom_boxplot`或其他geom的选项. (3认同)
  • 如果coord_cartesian不是一个选项,因为我使用`geom_boxplot`会怎么样? (2认同)
  • 没关系,在这种情况下,您可以在 `coord_flip` 而不是 `coord_cartesian` 中设置 ylim。 (2认同)