【问题标题】:My venn diagrams dont intersect - what's missing/wrong with my code我的维恩图不相交 - 我的代码缺少什么/错误
【发布时间】:2020-08-14 19:05:17
【问题描述】:

我有两个基因列表,我想在维恩图中表示这些列表之间的重叠。有人可以建议我在下面的代码中缺少什么吗?我正在使用 VennDiagram 包,我得到的结果是两个不相交的圆圈。我还使用 Venny https://bioinfogp.cnb.csic.es/tools/venny/index2.0.2.html 绘制了 venn 并确认存在重叠。

library(VennDiagram)

#select the data
dataset1 <- data.frame(as.character(v7$HGNC_Symbol)) #567 genes
dataset2 <- data.frame(as.character(test$toupper.v13.HGNC_Symbol.)) #476 genes

#rename the columns so I know the source
names(dataset1)[1] <- "Progenesis"
names(dataset2)[1] <- "BiomaRt"

#sort the dataframes alphabetically 
dataset1 <- dataset1 %>% arrange(Progenesis)
dataset2 <- dataset2 %>% arrange(BiomaRt)

#create a list of numbers and join it to dataframe1
mylist <- c(1:592)
dataset1 <- data.frame(mylist, dataset1)

#create a list of numbers and join it to dataframe2
mylist <- c(1:494)
dataset2 <- data.frame(mylist, dataset2)

#join the two dataframes
v <- plyr::join(dataset1, dataset2, type='full')

#draw the Venn Diagram

Dataset1 <- as.vector(v$Progenesis)
Dataset2 <- as.vector(v$BiomaRt)
Dataset2 <- na.omit(Dataset2)

    #first 20 rows of each dataset 
    dput(Dataset1)
        c("AACS ", "AARS ", "ABCF1 ", "ACAD11 ", "ACIN1 ", "ACO1 ", "ACOX3 ", 
        "ACP1 ", "ACSL3 ", "ACY1A ", "ACYP1 ", "ADA ", "ADI1 ", "ADK ", 
        "ADSL ", "ADSS ", "AGPAT3 ", "AHSA2 ", "AK4 ", "AKAP1 ")
        dput(Dataset2)
        structure(c("AACS", "AARS", "AARS", "ABCF1", "ACAD11", "ACIN1", 
        "ACO1", "ACOX3", "ACSL3", "ACYP1", "ADA", "ADI1", "ADK", "ADSL", 
        "AGPAT3", "AHSA2", "AKAP1", "AKAP12", "AKR1A1", "AKR1A1"),
        na.action = structure(495:592, class = "omit"))

venn.diagram(
  x = list(Dataset1, Dataset2),
  category.names = c("Set1" , "Set2"),
  filename = 'venn_diagram.png',
  output=TRUE
  )

欢迎所有建议。

谢谢

The result of my code is this

What I want is here

【问题讨论】:

  • 您好。只是一个提示:你可以使用1:494 而不是c(seq(1:494))。由于list 是数据类型和函数的名称,因此通常最好使用其他名称,例如my_list。是否可以向我们展示一些示例数据?
  • 嗨,马丁。感谢您的建议。做出了这些改变。如果您需要数据集,最好的附加方法是什么?

标签: r venn-diagram


【解决方案1】:

我对你的数据有几点意见:

dput(Dataset1)
        c("AACS ", "AARS ", "ABCF1 ", "ACAD11 ", "ACIN1 ", "ACO1 ", "ACOX3 ", 
        "ACP1 ", "ACSL3 ", "ACY1A ", "ACYP1 ", "ADA ", "ADI1 ", "ADK ", 
        "ADSL ", "ADSS ", "AGPAT3 ", "AHSA2 ", "AK4 ", "AKAP1 ")
dput(Dataset2)
        structure(c("AACS", "AARS", "AARS", "ABCF1", "ACAD11", "ACIN1", 
        "ACO1", "ACOX3", "ACSL3", "ACYP1", "ADA", "ADI1", "ADK", "ADSL", 
        "AGPAT3", "AHSA2", "AKAP1", "AKAP12", "AKR1A1", "AKR1A1"),
        na.action = structure(495:592, class = "omit"))

您的Dataset1 包含以空格 结尾的字符串。它们不等于Dataset2 中的那些,例如"AACS ""AACS" 不同。尝试将您的数据集转换为

Dataset1 <- c("AACS","AARS","ABCF1","ACAD11","ACIN1","ACO1","ACOX3", 
              "ACP1","ACSL3","ACY1A","ACYP1","ADA","ADI1","ADK", 
              "ADSL","ADSS","AGPAT3","AHSA2","AK4","AKAP1")

在这种情况下,您的输出应如下所示: 你的输出文件类型是.png,因此你应该使用参数imagetype='png'

【讨论】:

  • 嗨@Martin Gal。谢谢你的帮助。你能建议我如何进行这种转变吗?我是新手,还没有完全理解转换数据。
  • 假设您的数据集命名为Dataset1,并且末尾有空格,如上图所示。在这种情况下,您可以使用gsub("[[:space:]]$", "", Dataset1)gsub 使用正则表达式并查找模式,在这种情况下 空格 [[:space:]] 在末尾 $。这些被空字符串“”替换。注意:如果需要更多的转换,这个特殊的转换将无济于事。如果这个答案有帮助,请随时接受。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2016-07-31
  • 2010-11-04
  • 2022-01-23
  • 2015-02-22
相关资源
最近更新 更多