【问题标题】:Network Map from multiple columns?来自多列的网络地图?
【发布时间】:2018-05-01 00:20:10
【问题描述】:

我有一个表名列表,希望能够在 R 中可视化它们的关系。所以从表 A 到

例如,如果我有一个数据框:

 Col 1      Col 2     Col 3    Col 4

 Table A | Table B | Table C | 

 Table Z | Table A | Table C | Table Y

 Table K | Table L | Table M | Table B

 Table J | Table H | 

我之前使用 igraph 进行了映射,但我的数据结构不同。只有两列:从和到。如果我有多个这样的列,有没有办法绘制图表?我在这方面找不到很多资源。

我希望创建一个地图。这将有从表 A 到表 B 和 C 的行,然后是从表 A 到表 z 和表 C 和表 Y 的另一行,因为它们是相关的,等等。表 J 和表 H 之间只有一个连接彼此。

http://kateto.net/networks-r-igraph。 i 图中的网络是我试图模仿的

【问题讨论】:

  • 您需要解释列的含义。这是否意味着 A、B 和 C 都是完全连通的?所有 Z、A C 和 Y 之间也有联系吗?你想要什么?使用dput(head(df)) 向我们提供您的数据的小样本也会对您有所帮助
  • 我编辑了我的帖子,以便提供更多说明,并包含我正在尝试做的事情的链接。这些列只是一种知道从一个到另一个存在连接的方法。所以在上面的例子中 A ->B A ->C B->C。以下行遵循相同的逻辑。我希望做一个网络图来可视化哪些表与其他表连接。希望这更清楚一点

标签: r d3.js graphics mapping igraph


【解决方案1】:

您的句子“所以从表 A 到表的一行” 突然结束,但如果它像 表 B 和表 C 一样结束”。不幸的是,@ 987654321@ 仅适用于数字列表,因此您只需将数据转换为两列数据框:

您需要进行一些数据清理。如果您的数据在数据框中,那么您需要使用 tidyrgroup_bynest 函数,然后使用 lapply 函数迭代新的data 列,t 将列转换为行:

library(igraph)
library(tidyverse)


al_tibble <- tibble(c1 = c('a', 'z', 'k', 'j'),
                    c2 = c('b', 'a', 'l', 'h'),
                    c3 = c('c', 'c', 'h', NA),
                    c4 = c(NA, 'y', 'b', NA))

el <- al %>% 
  group_by(c1) %>%
  nest() %>%
  mutate(data = lapply(data, t)) %>% 
  unnest() %>%
  filter(!is.na(data))

g <- graph_from_data_frame(el)

如果您的数据组织在一个列表中,那么您需要遍历每个列表项并从中创建一个数据框。然后你需要使用bind_rows绑定每个创建的数据帧

al_list <- list('a' = c('b', 'c'),
                "z" = c('a', 'c', 'y'),
                "k" = c('l', 'h', 'b'),
                "j" = c('h'))

el2 <- lapply(names(al_list), function(x){
  tibble(from = x,
         to = al_list[[x]])
}) %>%
  bind_rows

g2 <- graph_from_data_frame(el2)

【讨论】:

    【解决方案2】:

    我在另一篇文章的帮助下解决了这个问题:

    plot(graph.data.frame(rbindlist(lapply(seq(ncol(test_a2)-1), function(i) test_a2[i:(i+1)]))))
    

    test_a2 只是一个包含多列的数据框

    在这里,它将绘制前两列,然后移动到第二列和第三列,依此类推。

    我希望这可以帮助别人!

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2014-03-19
      • 1970-01-01
      • 2011-11-22
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      相关资源
      最近更新 更多