首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文本添加到ggpairs()散点图中?

将文本添加到ggpairs()散点图中?
EN

Stack Overflow用户
提问于 2020-10-23 03:20:52
回答 1查看 728关注 0票数 0

愚蠢但令人恼火的问题:我如何才能将文本标签添加到我的散图中,ggpairs(...)图中?ggpairs(...)来自GGally库。普通的geom_text(...)函数似乎不是一个选项,因为它采用x,y参数,ggpairs创建了一个由不同样式的图形组成的NxN矩阵。

没有显示数据,但是想象一下,我有一个名为"ID“的列,其中包含散点图中显示的每个点的id。

如果有帮助的话,很乐意添加数据,但不确定它是否必要。也许答案很简单,就是不可能在ggpairs(...)中添加文本标签

代码语言:javascript
复制
library(ggplot2)
library(GGally)

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

注意:添加标签是供我个人参考的。所以没必要告诉我这看起来像一团乱七八糟。它会的。我只是想找出我的离群点。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 06:41:59

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

上、下是包含变量‘连续’、‘组合体’、‘离散’和'na‘的列表。列表中的每个元素可能是一个函数或一个字符串。

..。(更详细的说明)

如果一个函数作为选项提供给上、下或诊断,它应该实现function(data, mapping, ...){#make ggplot2 plot}的函数api。如果一个特定的函数需要它的参数集,那么用它的参数来wrap(fn, param1 = val1, param2 = val2)这个函数。

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

代码语言:javascript
复制
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')))

最终的结果是:

这里有三件事要注意:

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

的默认参数都是必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64493408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档