抱歉,这个例子不是那么好,但确实强调了这一点.
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))
Run Code Online (Sandbox Code Playgroud)
我想要做的是绘制一条平滑的曲线,但通过限制y轴的比例来"放大".然而,在计算平滑曲线时,ggplot似乎排除了超出比例限制的任何数据.是的,这似乎合乎逻辑,但我怎么看到我想看到的?在我的实际数据中,(原始)y值的范围在5到14之间,但平滑的曲线完全在7到9之间.因此顶部有很多空的空间.当我将其设置为c(7,9)时,它不再使用该范围之外的点来计算平滑曲线,因此我得到不同的曲线.
我不能通过数据提供,但您可以在此示例中看到这一点.看看在最后一个图中,两个点是否被丢弃,"Man"曲线的后半部分与原始图形中的不同.
题
如果scale_y_continuous限制用于构造平滑曲线(逻辑)的数据值,那么如何使用所有数据绘制曲线,然后在其上"放大"(与y轴相对).
如果不清楚,请告诉我.
谢谢
Ram*_*ath 19
用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))
Run Code Online (Sandbox Code Playgroud)