【问题标题】:create venn diagram using existing counts in R?使用 R 中的现有计数创建维恩图?
【发布时间】:2023-03-13 12:29:01
【问题描述】:

我想知道是否可以在 R 中使用 vennDiagram 生成维恩图,而无需使用 vennCounts 生成计数矩阵,但保存了类似的矩阵。所以假设我有这个矩阵:

G S P Counts

1 1 1 117898    
1 1 0 125901    
1 0 1 119360    
0 1 1 118086    
1 0 0 3505      
0 1 0 753       
0 0 1 701       
0 0 0 0 

当我这样做时,我称它为 M.

m <- as.matrix(M)
vennDiagram(m)

我明白了:

vennDiagram(m) 中的错误:无法绘制超过 3 组的维恩图

有没有办法解决这个问题?我试图绕过生成 1 和 0 的矩阵,因为我已经有了计数。

【问题讨论】:

    标签: r venn-diagram


    【解决方案1】:

    我想如果可以使用单个数字和共享区域,我也可以使用此解决方案 draw.triple.venn(area1, area2, area3, n12, n23, n13, n123) 其中 area 是总大小,nxy 是areax 和 areay 之间的共享区域。 所以 draw.triple.venn(130868, 126842, 120249, 125901, 118086, 119360, 117898),我会发送维恩图图像,但我需要更多的声誉才能这样做!

    【讨论】:

      【解决方案2】:

      这里有一个 hacky 方法。我生成包含由整数组成的假成员的人工集合。但它有效

      require(VennDiagram)
      lines = "1 1 1 117898    
      1 1 0 125901    
      1 0 1 119360    
      0 1 1 118086    
      1 0 0 3505      
      0 1 0 753       
      0 0 1 701       
      0 0 0 0"
      con <- textConnection(lines)
      data <- read.table(con)
      names(data) = c('G','S','P')
      
      close(con)
      
      sets = vector(mode = 'list', length = ncol(data)-1)
      names(sets) = names(data)[1:(ncol(data)-1)]
      lastElement = 0
      for (i in 1:nrow(data)){
          elements = lastElement:(lastElement+data[i,ncol(data)]-1)
          lastElement = elements[length(elements)]+1
          for (j in 1:(ncol(data)-1)){
              if (data[i,j]==1){
                  sets[[j]]=c(sets[[j]],elements)
              }
          }
      }
      laVenn = venn.diagram(sets,filename=NULL)
      plot.new()
      grid.draw(laVenn)
      

      【讨论】:

      • 这正是我要找的!谢谢你奥根。
      • 哦,我以为你想避免创建假对象。 samira 的回答可能是更好的方法,因为如果您的总对象数非常高(大约 2*10^9)并且使用不必要的内存,这可能会失败。
      • 你是对的,但你的解决方案比我自己尝试的任何对象创建都要快,这是主要的负担,尽管下面提到的一个不需要在任何类型上创建矩阵! :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2012-11-04
      相关资源
      最近更新 更多