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

Posted

技术标签:

【中文标题】使用现有 R 应用程序/包可视化协作网络结构【英文标题】:Visualizing collaboration network structure with existing R applications/packages 【发布时间】:2017-07-03 08:54:41 【问题描述】:

我正在尝试可视化“合资企业”的关系数据结构(即,公司与其他公司在产品上合作)。例如,公司 i 可能参与了与公司 j 的合资企业 A,但公司 i 也参与了与公司 j 和公司 k 的合资企业 B 等,所以公司 i、j、k 都共享某种形式的 co-成员关系 (i, j, i, j, k),但公司 i, j 之间的协作强度比公司 i, k 强,因为公司 i 和 j 以更多的联合冒险。

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

我已经查看了许多与 R 的 igraph 和 bipartite 包有关的以前的帖子(例如 this one),但不认为 bipartite 网络及其应用程序符合我的目的。

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

谢谢。

【问题讨论】:

你可以使用 visNetwork 包来创建这样的图 我听从了你和@KoenV 的建议,效果很好。谢谢! 【参考方案1】:

正如@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 中交互)

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

【讨论】:

非常感谢您花时间说明这一点!我应该能够发布 visNetwork 代码,添加一些装饰(例如,用节点名称标记节点)等。但是,visIgraphLayout(layout = "layout_in_circle") %>% 命令行似乎不起作用我的 Rstudio,R 返回错误消息“找不到 'layout_in_circle' 函数。请验证它。”我也尝试使用默认的“layout_nicely”,它仍然不起作用。我对 visNetwork 很陌生,这是编程错误吗? 安装并加载igraph包后重试,然后请告诉我它是否有效。 再次感谢!我删除了旧版本并重新安装了 igraph,现在它可以工作了。非常感谢。 我的荣幸!我将通过加载igraph 来更新代码

以上是关于使用现有 R 应用程序/包可视化协作网络结构的主要内容,如果未能解决你的问题,请参考以下文章

开发自己的R包(转)

R语言使用igraph包进行网络(network)可视化实战

R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景受试者口服茶碱的之后观察茶碱的浓度变化的山脊图

R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)将变量映射到网络的边(edge)

在现有 GitLab 项目上进行协作需要哪些步骤?

不能使用R语言的arules的数据集怎么办