geom_abline(...)多次绘制数据?

时间:2017-07-24 18:25:49

标签: r ggplot2

使用geom_abline(...)(以及geom_vlinegeom_hline)在“天真地”使用时会导致同一行的多次过度绘制吗?

例如,假设我们对以下分面散点图感兴趣:

library(ggplot2)
library(dplyr)

k <- 4
data.frame(id = letters[1:k], 
           m = rnorm(k), 
           b = rnorm(k))[rep(1:k, 30),] %>%
  mutate(x = rnorm(n()),
         eps = 0.1*rnorm(n()),
         y = m*x + b + eps) %>%
  ggplot(aes(x, y)) + 
  geom_point() +
  facet_wrap(~ id) ->
  p

向其添加ab-line的最简单方法如下:

print(p + geom_abline(aes(slope = m, intercept = b), color = 'red'))

这是“正确的方法”吗?特别是,上面没有将每个方面的ab线绘制30次?例如,这使它看起来像:

print(p + geom_abline(aes(slope = m, intercept = b + eps), color = 'red'))

如果是这样,做这样的事情会更好吗?

print(p + geom_abline(aes(slope = m, intercept = b), 
                      data = Z %>% group_by(id) %>% summarize(m = unique(m), b = unique(b)),
                      color = 'red'))

请注意,这会从第一个图中产生视觉上不可分割的东西。我的问题是关于使用这些ggplot函数的正确方法。

1 个答案:

答案 0 :(得分:1)

geom_abline通过使值唯一来处理同一位置的多行。你也可以通过运行例如验证p + geom_abline(aes(slope = m, intercept = b), color = 'red', alpha = .1) - 如果在同一地点有30条线,它们将是不透明的。