Визуализация сетевой структуры совместной работы с существующими приложениями / пакетами R

Я пытаюсь визуализировать реляционную структуру данных «совместного предприятия» (т. Е. Фирмы сотрудничают с другими в продуктах). Например, фирма i может быть вовлечена в совместное предприятие A с фирмой j, но при этом фирма i также участвует в совместном предприятии B с фирмой j, фирмой k и т. Д., Поэтому обе фирмы i, j, k все имеют какое-то совместное участие. отношения членства ({i, j}, {i, j, k}), но сила сотрудничества между фирмой {i, j} сильнее, чем у фирмы {i, k}, поскольку фирмы i и j сотрудничают в более совместных риск.

Я хотел бы визуализировать это на этих знаковых сетевых графиках, но подчеркнуть силу взаимосвязей, которая варьируется между разными диадами (фирмами). Уместным примером, который пришел мне в голову, является исследование соавторства Марка Ньюмана в PNAS (Newman 2004), на рис. 6 каждая пара узлов (т. Е. Авторы) соединены ребрами разной толщины, что отражает силу интенсивности соавторства между каждой парой авторов ( т. е. количество совместных работ между ними), как показано на рисунке ниже:

From Newman (2004) Я проверил ряд предыдущих сообщений (например, this one), относящийся к пакетам Rigraph и двудольным пакетам, но не думаю, что двудольная сеть и ее приложение подходят для моей цели здесь.

Мне интересно (1) существуют ли какие-либо существующие пакеты / приложения R, которые помогут визуализировать силу связности между каждым узлом в сети, и (2) как должна выглядеть структура этого типа данных? (используя «фирма», «проект» в качестве столбцов или строк?)

Спасибо.


person Chris T.    schedule 03.07.2017    source источник
comment
вы можете использовать пакет visNetwork для создания такого графика   -  person R.B    schedule 03.07.2017
comment
Я последовал твоему предложению и @ KoenV, и это хорошо работает. Спасибо!   -  person Chris T.    schedule 03.07.2017


Ответы (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)

введите здесь описание изображения

Пожалуйста, дайте мне знать, хотите ли вы этого.

person KoenV    schedule 03.07.2017
comment
Большое спасибо за то, что нашли время проиллюстрировать это! Я должен иметь возможность твитнуть код visNetwork, добавляя некоторые косметические средства (например, маркируя узлы их именами узлов) и т. Д. Однако командная строка visIgraphLayout (layout = layout_in_circle)% ›%, похоже, не работает в моем Rstudio , R возвращает сообщение об ошибке Не удается найти функцию layout_in_circle. Пожалуйста, проверьте это. Я также пробовал использовать "layout_nicely" по умолчанию, но он все равно не работает. Я новичок в visNetwork, это ошибка программирования? - person Chris T.; 03.07.2017
comment
Повторите попытку после установки и загрузки пакета igraph и дайте мне знать, работает ли он тогда. - person KoenV; 03.07.2017
comment
Спасибо еще раз! Я удалил старую версию и переустановил igraph, теперь он работает. Большое спасибо. - person Chris T.; 03.07.2017
comment
Не за что! Я обновлю код с загрузкой igraph - person KoenV; 03.07.2017