道歉,这个例子不是那么好,但确实强调了这一点。
mtcars$tran <- factor(mtcars$am, labels=c("Man","Aut"))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) + geom_smooth(aes(colour=tran))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) + scale_y_continuous(limits=c(12,60))
我想要做的是绘制平滑的曲线,但通过限制y轴的比例来“放大”。然而,在计算平滑曲线时,ggplot似乎排除了超出比例限制的任何数据。是的,这似乎合乎逻辑,但我怎么看到我想看到的?在我的实际数据中,(原始)y值的范围在5到14之间,但平滑的曲线完全在7到9之间。因此顶部有很多空的空间。当我将其设置为c(7,9)时,它不再使用该范围之外的点来计算平滑曲线,因此我得到不同的曲线。
我无法通过数据提供,但您可以在此示例中看到此信息。看看在最后一个图中,两个点是否被删除,“Man”曲线的后半部分与原始图形中的不一样。
问题
如果scale_y_continuous限制用于构建平滑曲线(逻辑)的数据值,您如何使用所有数据绘制曲线,然后“放大”它(y轴)。
如果不清楚,请告诉我。
由于
答案 0 :(得分:17)
使用coord_cartesian
代替scale_y_continuous
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) +
geom_smooth(aes(colour=tran)) +
coord_cartesian(ylim = c(12,60))