R блестящий сетевой график D3 с NodeSize - PullRequest
0 голосов
/ 04 февраля 2019

Я использую библиотеку D3Network для построения графика в сети (используя блестящий).

wc <- cluster_walktrap(finalGraph)
members <- membership(wc)
karate_d3 <- igraph_to_networkD3(finalGraph, group = members)

forceNetwork(Links = karate_d3$links, Nodes = karate_d3$nodes, 
                     Source = 'source', Target = 'target', opacity = 0.85, zoom = TRUE,
                     NodeID = 'name', Group = 'group', fontSize = 20, Nodesize = "weight",
                     colourScale = JS('force.alpha(1); force.restart(); d3.scaleOrdinal(d3.schemeCategory20);'))

finalGraph вот весовой igraph, который я конвертирую в d3

V(finalGraph)$weight <- #logic to assign weight

Я хочуРазмер узла D3 для представления значения веса, но выполнение Nodesize = "weight" не работает, поскольку столбец не определен.Как добавить это в качестве атрибута / столбца для d3, чтобы он мог отобразить вес?

1 Ответ

0 голосов
/ 04 февраля 2019

Вы должны сохранить размер в матрице узла.Вот полностью рабочий пример, включая график.Обратите внимание, что размер узла не берется напрямую, а каким-то образом пересчитывается другой функцией (radiusCalculation).

library(networkD3)
library(igraph)

# build graph
finalGraph <- erdos.renyi.game(10,0.3)
wc <- cluster_walktrap(finalGraph)
members <- membership(wc)
karate_d3 <- igraph_to_networkD3(finalGraph, group = members)

# here is the important line: set size!
karate_d3$nodes$size = abs(rnorm(10,mean=1,sd=10))^2

forceNetwork(Links = karate_d3$links, Nodes = karate_d3$nodes, 
             Source = 'source', Target = 'target', opacity = 0.85, zoom = TRUE,
             NodeID = 'name', Group = 'group', fontSize = 20, Nodesize = 'size',
             colourScale = JS('force.alpha(1); force.restart(); d3.scaleOrdinal(d3.schemeCategory20);'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...