【问题标题】:Venn Diagram in R to show character labelsR中的维恩图显示字符标签
【发布时间】:2021-06-09 00:29:19
【问题描述】:

我对 R 非常陌生,并试图用包含所有分类变量的数据创建一个 4 维维恩图。 例如,如果我有下面的数据,并且我想在 R 中创建一个维恩图,以在 A 和 B 的交叉点显示单词“你好”而不是计数和百分比,我该怎么做?我在创建下面的列表后使用了代码ggVennDigram(x),它给了我计数而不是实际的数据标签。

x=list()                        
x$A=as.character(c("hello"))
x$B=as.character(c("hello", "how", "are"))
x$C=as.character(c("how", "You"))
x$D=as.character(c("me", "her", "they"))

【问题讨论】:

  • 您好,您能否将库的名称添加到您的问题中。还请包括您尝试过的代码。这将使它成为一个更好的问题,对未来的读者更有用。
  • 库(ggplot) 库(VennDiagram) x=list() x$A=as.character(c("hello")) x$B=as.character(c("hello", "how", "are")) x$C=as.character(c("how", "You")) x$D=as.character(c("me", "her", "they") ) ggVennDiagram(x)

标签: r ggplot2 venn-diagram


【解决方案1】:

默认情况下,图表不能被标注。这是一些破解的解决方案。 (修改自Venn Diagram with Item labels)

library(VennDiagram)
library(stringr)
library(purrr)

# Generate plot
v <- venn.diagram(x,
                  fill = c("orange", "blue", "red", "green"),
                  filename=NULL)

# Calculate overlap site
overlaps <- calculate.overlap(x)
overlaps <- overlaps[str_sort(names(overlaps), numeric = TRUE)] # sort base on numeric value

# Apply name to global variable
# Index of venn diagram start at calculate.overlaps + 8. You have to find the index value by yourself for (3,5,6,7,.. venn)
walk2(seq(overlaps) +8, seq(overlaps),  
      function(x,y) {v[[x]]$label <<- paste0(overlaps[[y]], collapse = "\n")})

# Draw plot
grid.draw(v)

【讨论】:

  • 谢谢,这很有帮助。我对 R 很陌生,所以我会稍微消化一下代码,然后再回答任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2014-09-21
相关资源
最近更新 更多