【发布时间】:2023-03-05 20:53:01
【问题描述】:
很抱歉,这个例子不是很好,但它确实突出了重点。
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) 时,它不再使用该范围之外的点来计算平滑曲线,因此我得到了一条不同的曲线。
我无法提供数据,但您可以在此示例中看到这一点。看看在最后一个图中,两个点是如何下降的,“人”曲线的后半部分与原始图中的不同。
问题
如果 scale_y_continuous 限制了用于构建平滑曲线(逻辑)的数据值,您如何使用所有数据绘制曲线,然后“放大”它(y 轴)。
如果不清楚,请告诉我。
谢谢
【问题讨论】:
-
geom_smooth的默认缩放将在下一个版本中改变,据我所知(应该在圣诞节/新年前后推出)。看这里,例如:stackoverflow.com/questions/7857020/…