向 ggpairs() 散点图添加文本?

Add text to a ggpairs() scatterplot?

愚蠢但令人抓狂的问题:如何向 ggpairs(...) 图中的 散点图添加文本标签? ggpairs(...) 来自 GGally 图书馆。正常的 geom_text(...) 函数似乎不是一个选项,因为它接受 x,y 参数并且 ggpairs 创建一个 NxN 矩阵的不同样式的图。

未显示数据,但假设我有一个名为“ID”的列,其中包含散点图中显示的每个点的 ID。

如果有帮助,很高兴添加数据,但不确定是否有必要。也许答案很简单,无法将文本标签添加到 ggpairs(...)?

library(ggplot2)
library(GGally)

ggpairs(hwWrld[, c(2,6,4)], method = "pearson")

注:添加标签仅供个人参考。所以没必要告诉我它看起来一团糟。它会。我只是想找出我的异常值。

谢谢!

这当然是可能的。查看 ?GGally::ggpairs 的文档,有三个参数,upperlowerdiag,从文档的详细信息来看是

Upper and lower are lists that may contain the variables 'continuous', 'combo', 'discrete' and 'na'. Each element of thhe list may be a function or a string

... (more description)

If a function is supplied as an option to upper, lower, or diag, it should implement the function api of function(data, mapping, ...){#make ggplot2 plot}. If a specific function needs its parameters set, wrap(fn, param1 = val1, param2 = val2) the function with its parameters.

因此,“制作标签”的一种方法是覆盖绘图的默认值。例如,如果我们想在上面的三角形中写“hello world”,我们可以这样做:

library(ggplot2)
library(GGally)
#' Plot continuous upper function, by adding text to the standard plot
#' text is placed straight in the middle, over anything already residing there!
continuous_upper_plot <- function(data, mapping, text, ...){
  p <- ggally_cor(data, mapping, ...)
  if(!is.data.frame(text))
    text <- data.frame(text = text)
  lims <- layer_scales(p)
  p + geom_label(data = text, aes(x = mean(lims$x$range$range), 
                                  y = mean(lims$y$range$range), 
                                  label = text), 
                 inherit.aes = FALSE) 
}
ggpairs(iris, upper = list(continuous = wrap(continuous_upper_plot, 
                                                     text = 'hello world')))

最终结果是:

这里有3点需要注意:

  1. 我决定在函数本身中添加文本。如果您的文本是现有数据的一部分,只需在调用函数时使用 mapping (aes) 参数就足够了。这可能也更好,因为您希望向特定点添加文本。
  2. 如果您有任何额外的函数参数(在 datamapping 之外),您将需要使用 wrap 将它们添加到调用中。
  3. 函数文档特别指出参数应该是 data, mapping 而不是 ggplot2 的标准 mapping, data。因此,对于任何 ggplot 函数,需要一个小的包装器来切换它们的位置,以覆盖 ggpairs.
  4. 的默认参数