多列的网络地图?

时间:2018-04-18 20:07:30

标签: r d3.js graphics mapping igraph

我有一个表名列表,希望能够在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图中的网络就是我想模仿的东西

2 个答案:

答案 0 :(得分:0)

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

您需要进行一些数据清理。如果您的数据位于数据框中,那么您需要使用 tidyr graph_from_adj_listgroup_by函数,然后使用nest函数迭代新的数据列,lapply将列转换为行:

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

答案 1 :(得分:0)

我在另一篇文章的帮助下想到了这一点:

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

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

在这里,它将绘制前两列的图形,然后移动到第二列和第三列,等等。

我希望这可以帮助别人!