ggpairs,按组颜色但单一回归线

ggpairs, color by group but single regression line

给定以下 ggpairs 绘图:

data(iris)
ggpairs(iris[1:4],
        lower=list(
          mapping = aes(color=iris$Species),
          continuous = wrap("points", size=0.7)
          )
        )

这导致:

如何将单个回归线添加到每个散点图,而不像添加 continuous = wrap("smooth") 时那样将回归线也映射到分组?

我希望这些点按组着色,但 x 和 y 变量之间关系的回归线整体。

我不知道在哪里放置 aes 映射,因此它只影响 'points' 而不是 'smooth'。

如果您想要这样的专用图,您需要创建自己的函数。它必须采用特定格式,采用 datamapping... 参数,并根据这些创建一个 ggplot:

library(GGally)

my_func <- function(data, mapping, ...) {
  
    ggplot(data, mapping) + 
      geom_point(size = 0.7) +
      geom_smooth(formula = y~x, method = loess, color = "black")
  }

ggpairs(iris[1:4],
        lower=list(
          mapping = aes(color=iris$Species),
          continuous = my_func
          )
        )

如果您正在寻找直线回归线,则只需适当修改 my_func。例如,

my_func <- function(data, mapping, ...) {
  
    ggplot(data, mapping) + 
      geom_point(size = 0.7) +
      geom_smooth(formula = y~x, method = lm, color = "black", se = FALSE,
                  linetype = 2)
  }

给你: