【问题标题】:geom_smooth() - and scaling the y axis, losing data from smoothinggeom_smooth() - 缩放 y 轴,从平滑中丢失数据
【发布时间】: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 轴)。

如果不清楚,请告诉我。

谢谢

【问题讨论】:

标签: r ggplot2


【解决方案1】:

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

【讨论】:

  • 太棒了!总有办法,只是知道在哪里看。
猜你喜欢
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多