使用现有的R应用程序/包可视化协作网络结构

时间:2017-07-03 08:54:42

标签: r social-networking igraph bipartite

我正在尝试想象一下"合资企业"的关系数据结构。 (即,公司与产品中的其他公司合作)。例如,公司i可能参与合资公司A与公司j,但公司我也参与合资公司B与公司j和公司k等,所以公司i,j,k都共享某种合作会员关系({i,j},{i,j,k}),但公司{i,j}之间合作的力度强于公司{i,k},因为公司i和j合作更多联合风险。

我想在这些标志性的网络图中将其可视化,但强调不同对偶(公司)之间的关系强度。我想到的一个相关例子是Mark Newman在PNAS(Newman 2004)中的共同作者研究,在图6中,每对节点(即作者)通过不同厚度的边连接,代表每对作者之间共同作者强度的强度(即两者之间的协作作品数量),如下图所示:

From Newman (2004) 我已经查看了一些与R&'s igraph和二分包有关的先前帖子(例如this one),但不认为二分网络及其应用符合我的目的。

我想知道(1)是否有任何现有的R包/应用程序可以帮助可视化网络中每个节点之间的连接强度,以及(2)这种类型的数据结构应该如何看待喜欢? (使用'公司','项目'作为列或行?)

谢谢。

1 个答案:

答案 0 :(得分:2)

正如@ R.B所说,您可以使用visNetwork库。发明数据的代码可能如下所示:

library(igraph)
library(visNetwork)

set.seed(98765)   # for reproducibility
### generate some data, 
### nodes are entitities: letters represent contributors
nodes <- data.frame(id = 1:11, 
                    label = LETTERS[1:11],  # name of node
                    title = LETTERS[1:11])  # optional tooltip
### edges represent relations 
edges <- data.frame(
  from = sample(1:11, 50, replace = TRUE),
  to =  sample(1:11, 50, replace = TRUE),
  arrows = "",
  width = c(rep(1, 20), rep(4, 20), rep(6,6), rep(10, 3), 15)  ## weights
)


visNetwork(nodes, edges, width = "100%") %>%
  visIgraphLayout(layout = "layout_in_circle") %>%
  visNodes(size = 25) %>%
  visOptions(highlightNearest = list(enabled = F, hover = T) )

这将生成以下图表(以html交互)

enter image description here

请告诉我这是否是你想要的。