geom_smooth()-缩放y轴,丢失平滑数据

12

很抱歉这个例子不太好,但它确实突出了重点。

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轴)?
如果不清楚,请告诉我。
谢谢

据我所知,geom_smooth的默认缩放将在下一个版本中更改(应该会在圣诞节/新年左右发布)。例如,请参见此处:https://dev59.com/tlzUa4cB1Zd3GeqP3nkX - Xu Wang
1个回答

22

使用 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))

1
太棒了!总有办法,只要知道在哪里寻找。 - nzcoops
如何使用coord_polar()实现这个功能?我正在绘制给定纬度下经度的温度函数。 - climatestudent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接