R 中的维恩图 - 提取每个维恩区域的元素,甚至使其具有交互性
Posted
技术标签:
【中文标题】R 中的维恩图 - 提取每个维恩区域的元素,甚至使其具有交互性【英文标题】:Venn diagram in R - extract elements of each single Venn-Area or even make it interactive 【发布时间】:2022-01-09 22:01:32 【问题描述】:我有一份测序基因列表。这个基因列表被注释为一个 GEN-ID。下面的链接显示了一个列表的示例。
file format of lists
在此列表中,数字表示在样本中找到了 gen。 NA 表示找不到gen。
我想以两个这样的列表为例,用它们做一个维恩图。我为此使用的代码如下:
listA <- read.csv("young.csv", header = FALSE)
A <- listA
A
listB <- read.csv("old.csv", header = FALSE)
B <- listB
B
length(A$V2)
length(B$V2)
A[is.na(A)] <- ""
B[is.na(B)] <- ""
library(VennDiagram)
xx.1 <- venn.diagram(list("young_control" =A$V2, "old_control" = B$V2), fill = c("yellow","cyan"), cex
=4.0, filename = "venn_excersice.png")
通过这个,我生成了一个维恩图,显示了仅在 listA 中、仅在 listB 中或同时在 listA 和 listB 中的基因。
我现在的问题是: 如果我想从生成的 Venn 的每个区域获取 Gen-ID 列表,我该怎么做? 我尝试了 attr、output、intersect 和其他函数,但不知何故它不起作用,我不知道为什么会这样。
此外,我想生成一个交互式维恩图。您可以在其中单击该区域并立即获得该区域中 Gen-ID 的可视化表示。
如果有人对我可以尝试达到这个目标有什么建议,我会非常高兴!
列表格式:
列表 A
ID.........Y G-1........1 G-2.......不适用 G-3........3 G-4........4
列表 B
ID.........O G-1........1 G-2....... 2 G-3........3 G-4........不适用
【问题讨论】:
您能与我们分享您的listA
和listB
的数据吗?您可以使用dput(listA)
和dput(listB)
我不确定如何在堆栈溢出中使用 dput。我希望我对列表的表示以及您可以在超链接上找到的图片对您有所帮助。
您在 R 中使用 dput()
,然后将输出复制并粘贴到您的问题中
请提供足够的代码,以便其他人更好地理解或重现问题。
【参考方案1】:
你可以用几个 R 包来做大部分事情(有一个列表here)。使用nVennR
,您可以制作和探索您想要的图表(参见vignette 了解食谱)。在 R 中制作交互式图表并不容易,您可能需要一个闪亮的应用程序。
尽管如此,nVenn
也有一个 web server,它会产生类似的东西。您只需在文本框中写下列表。重复的行被删除,但 NA 被理解为一个项目,因此您需要事先删除它们。交互性由网页本身提供,因此您需要使用提供的永久链接反复探索图表。 Here 是您提供的数据的一个示例。如果您单击任何圆圈,您将在左侧的文本框中获得该区域中的元素。注意文本框下方的Permanent link
。
【讨论】:
以上是关于R 中的维恩图 - 提取每个维恩区域的元素,甚至使其具有交互性的主要内容,如果未能解决你的问题,请参考以下文章