首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制作比较两个数据帧之间列组合的Venn图

制作比较两个数据帧之间列组合的Venn图
EN

Stack Overflow用户
提问于 2020-09-14 22:52:50
回答 1查看 1.2K关注 0票数 0

我很难解决这个问题:

我有两个数据帧,每个都有两个名为c("miRNAs", "Targets")的列。每个数据帧是预测的microRNAs和它们来自不同程序的目标的组合。我试图绘制一个Venn图,显示这两个预测的交集,但我在最后一步失败了。我可以发现相似之处,但我无法绘制Venn图。

数据帧如下所示:

代码语言:javascript
复制
> dput(test_a)
structure(list(miRNA = structure(c(1L, 1L, 1L, 1L, 4L, 3L, 2L
), .Label = c("miR-10", "miR-300", "miR-8", "miR-9"), class = "factor"), 
    Target = structure(c(1L, 1L, 3L, 4L, 1L, 5L, 2L), .Label = c("A", 
    "AA", "B", "C", "D"), class = "factor")), class = "data.frame", row.names = c(NA, 
-7L))

> dput(test_b)
structure(list(miRNA = structure(c(2L, 2L, 2L, 2L, 4L, 3L, 1L
), .Label = c("", "miR-10", "miR-12", "miR-9"), class = "factor"), 
    Target = structure(c(2L, 2L, 3L, 4L, 6L, 5L, 1L), .Label = c("", 
    "A", "B", "C", "D", "Y"), class = "factor")), class = "data.frame", row.names = c(NA, 
-7L))

#present in both dataframes
both_test_ab<- intersect(test_a, test_b)

   miRNA Target
1 miR-10      A
2 miR-10      B
3 miR-10      C
#present only in a 
only1  <- setdiff(test_a, test_b)
    miRNA Target
1   miR-9      A
2   miR-8      D
3 miR-300     AA

#present only in b 
only2  <- setdiff(test_b,test_a )
 miRNA Target
1  miR-9      Y
2 miR-12      D

#Venn diagram (PROBLEM)
vp  <- venn.diagram(
x = list(test_a, test_b), col=c("#440154ff", '#21908dff'),
fill = c(alpha("#440154ff",0.3), alpha('#21908dff',0.3)),
category.names = c("seed" , "miranda"),
filename = NULL, cat.pos = 1)

有人能告诉我为什么我不能画出维恩图,以及如何解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-15 03:10:16

你使用了错误的数据类型。函数venn.diagram()需要一个向量的列表。然而,test_atest_b是数据帧。

我把test_atest_b转换成向量,它起作用了。见下文。

代码语言:javascript
复制
# Convert to vectors
test_a_vector <- as.vector(unlist(test_a))
test_b_vector <- as.vector(unlist(test_b))

# Create Venn Diagram 
venn.diagram(
  x = list(test_a_vector, test_b_vector), col=c("#440154ff", '#21908dff'),
  category.names = c("seed" , "miranda " ), fill = c(alpha("#440154ff",0.3), alpha('#21908dff',0.3)),
  filename = '#Ven_Test.tiff',
  output=TRUE, cat.pos = 1)

结果:

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

https://stackoverflow.com/questions/63892775

复制
相关文章

相似问题

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