Чтобы использовать функцию forceNetwork()
в networkD3
, вам нужно один кадр данных для ссылки и один кадр данных для узлов. Используя свои векторы выше, вы можете создать соответствующие кадры данных и передать их в forceNetwork()
, как это ...
library(networkD3)
nodes <- data.frame(id = unique(c(nodes1, nodes2)), group = 1)
links <- data.frame(source = match(nodes1, nodes$id) - 1,
target = match(nodes2, nodes$id) - 1,
value = values)
forceNetwork(Links = links, Nodes = nodes, Source = 'source', Target = 'target',
Value = 'value', NodeID = 'id', Group = 'group')
Рама nodes
данных требуется один столбец для «ид» или имя каждого узла и один столбец для группу каждого узла (которую вы можете установить только 1
, если они не сгруппированы). После запуска кода выше, кадр данных nodes
выглядит следующим образом ...
id group
1 A 1
2 B 1
3 C 1
4 S 1
Рам links
данных должен-строка для каждой ссылки/краев, и один столбец для источника «» в ссылке, один столбец для «цели» каждой ссылки и одного столбца для «значения» для каждой ссылки. Значения «источник» и «цель» равны индексу узла в фрейме данных nodes
, на который они ссылаются, но они должны быть проиндексированы нулями для работы с базовым JavaScript. После выполнения приведенного выше кода фрейм данных links
выглядит следующим образом:
source target value
1 0 3 1.00
2 1 2 0.45
3 2 1 0.44