stat_smooth和scale transformation的操作顺序

Dre*_*een 1 r ggplot2

我正在绘制一些带有线性拟合线的对数标度数据,如下所示:

d <- data.frame(x=1:10, y=10^(1:10 + rnorm(10)))
ggplot(d, aes(x=x, y=y)) + geom_point() + 
  geom_smooth(method="lm", se=FALSE) +
  scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

看起来像被计算在转换后的数据的线性回归线,否则它会直接通过最后一个点去.真的吗?

我似乎记得在ggplot2文中已经解决了这个问题,但我现在找不到它.

Kev*_*hey 6

ggplot呈现一个情节,但是这样做的顺序如下:

  1. 将变量映射到美学(即,对于每个层,确定哪个变量与哪个美学相关联等)
  2. 构面数据集(制作面板)
  3. 改变尺度(通过任何scale_功能,通常)
  4. 计算美学(即计算lm拟合,在这种情况下 - 这是stat_函数进入的地方,通常通过geom_函数调用)
  5. 训练秤(弄清楚总体情节应该是多少)
  6. 地图比例(找出每个图层在整体图中的位置)
  7. 渲染宝石.

因此,缩放在模型拟合之前发生,因此是,正在计算变换数据的拟合.