stat_smooth和scale transformation的操作顺序

时间:2013-02-12 21:50:36

标签: 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()

enter image description here

看起来就像在变换后的数据上计算线性回归线,否则它会直接通过最后一点。真的吗?

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

1 个答案:

答案 0 :(得分:6)

ggplot呈现绘图时,它按以下顺序执行:

  1. 将变量映射到美学(即,对于每一层,找出哪个变量与哪种美学相关联)
  2. 面对数据集(制作面板)
  3. 转换比例(通常通过任何scale_函数)
  4. 计算美学(即计算lm拟合,在这种情况下 - 这是stat_函数的来源,通常通过geom_函数调用)
  5. 训练秤(弄清楚总体情节应该是什么)
  6. 地图比例尺(确定每个图层在整体图中的位置)
  7. 渲染宝石。
  8. 因此,缩放在模型拟合之前发生,因此是,正在计算变换数据的拟合。