愚蠢但令人恼火的问题:我如何才能将文本标签添加到我的散图中,点在ggpairs(...)图中?ggpairs(...)来自GGally库。普通的geom_text(...)函数似乎不是一个选项,因为它采用x,y参数,ggpairs创建了一个由不同样式的图形组成的NxN矩阵。
没有显示数据,但是想象一下,我有一个名为"ID“的列,其中包含散点图中显示的每个点的id。
如果有帮助的话,很乐意添加数据,但不确定它是否必要。也许答案很简单,就是不可能在ggpairs(...)中添加文本标签
library(ggplot2)
library(GGally)
ggpairs(hwWrld[, c(2,6,4)], method = "pearson")

注意:添加标签是供我个人参考的。所以没必要告诉我这看起来像一团乱七八糟。它会的。我只是想找出我的离群点。
谢谢!
发布于 2020-10-23 06:41:59
这当然是可能的。查看?GGally::ggpairs的文档,有三个参数,upper、lower和diag,这些参数来自文档的详细信息
上、下是包含变量‘连续’、‘组合体’、‘离散’和'na‘的列表。列表中的每个元素可能是一个函数或一个字符串。
..。(更详细的说明)
如果一个函数作为选项提供给上、下或诊断,它应该实现function(data, mapping, ...){#make ggplot2 plot}的函数api。如果一个特定的函数需要它的参数集,那么用它的参数来wrap(fn, param1 = val1, param2 = val2)这个函数。
因此,“制作标签”的一种方法是覆盖一个地块的默认值。例如,如果我们想在上三角形中写"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')))最终的结果是:

这里有三件事要注意:
mapping (aes)参数即可。这也可能更好,因为您希望向特定点添加文本。data和mapping之外),则需要使用wrap将这些参数添加到调用中。函数文档data, mapping,而不是ggplot2的标准,后者是mapping, data。因此,对于任何ggplot函数,切换它们的位置的小包装器对于覆盖ggpairs.的默认参数都是必要的。
https://stackoverflow.com/questions/64493408
复制相似问题