【问题标题】:Venn Diagrams with `venneuler` in `R`: delete the name of the set from the plot and add elements name在“R”中带有“venneuler”的维恩图:从图中删除集合的名称并添加元素名称
【发布时间】:2021-02-01 14:12:21
【问题描述】:

在过去的几天里,我一直试图弄清楚如何从任意数量的集合中绘制维恩图,并遇到了 Rvenneuler。这段代码:

genes <- paste("gene",1:20,sep="")

df = data.frame(term=character(), class=character(), stringsAsFactors = FALSE)
for (k in 1:15) {
  df2=data.frame(term=sample(genes,10), class = rep(paste("class ",k,sep=""),10), stringsAsFactors = 
  FALSE)
  df<-rbind(df,df2)
}


library(rJava)
library(UpSetR)
library(tidyverse)
library(venneuler)
library(grid)

v <- venneuler(df)

par(cex = 0.5) 
plot(v)

产生这样的图形:

这个数字正是我想要的。无论如何,我想从图中删除集合的名称(1 类、2 类等),而是添加每个集合中包含的元素(例如基因 1、基因 2)。

【问题讨论】:

标签: r venn-diagram


【解决方案1】:

你可以直接修改v$labels:

library(venneuler)
library(dplyr)
library(stringr)

v <- venneuler(df)

par(cex = 0.5) 

# Create the list of genes per class
classgenes <- df %>% group_by(class) %>% 
                     summarize(labels = paste(stringr::str_sort(term,numeric=T),collapse = '\n'))  %>%
                     ungroup 


# Order the class new label according to v$labels order
newlabels <- left_join(data.frame(class = v$labels), classgenes)
#> Joining, by = "class"

# Modify the labels
v$labels <- newlabels$labels

plot(v)

【讨论】:

  • @Mark,你的问题我理解正确吗?
  • 是的!谢谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2018-10-08
  • 1970-01-01
  • 2019-10-31
  • 2014-04-11
  • 2014-06-08
相关资源
最近更新 更多