Я пытаюсь использовать forceNetwork
в пакете networkd3 . Я хочу определить linkDistance
, чтобы установить определенное расстояние для каждого узла. Но у меня есть проблема ( так же, как этот вопрос ). Ответ там не решает мою проблему.
Вот мой пример данных и код.
library(tibble)
library(networkD3)
library(htmlwidgets)
##Data
link_df <-
tibble::tribble(
~source, ~target, ~weight, ~source_idx, ~target_idx, ~linkdist,
"great", "great", 1.0000000, 0, 0, 10.000000,
"good", "great", 0.7036672, 1, 0, 7.036672,
"best", "great", 0.3486529, 2, 0, 3.486529,
"win", "great", 0.2147706, 3, 0, 2.147706
)
node_df <-
tibble::tribble(
~node, ~degree, ~sent, ~node_size,
"great", 0.6817043, "A", 64.789598,
"good", 0.5037594, "A", 19.320302,
"best", 0.4761905, "B", 15.425671,
"win", 0.6190476, "C", 44.057260
)
##Code
ColourScale <- 'd3.scaleOrdinal()
.domain(["A", "B", "C", "D"])
.range(["#ffdd00", "#ff0000", "#0004ff", "#9500ff"]);'
forceNetwork(Links = link_df, Nodes = node_df,
Source = 'source_idx', Target = 'target_idx',
NodeID = 'node', Group = 'sent',
Nodesize = 'node_size',
bounded = TRUE, opacityNoHover = TRUE, zoom = TRUE,
colourScale = JS(ColourScale),
legend = TRUE,
fontFamily = "Calibri",
fontSize = 20,
charge = -400,
opacity = 0.8)
Я пытаюсь это сделать. Но это не решило.
linkDistance = networkD3::JS("function(d) { return 5*d.linkdist; }")
или
linkDistance=JS('function(d) {', 'return d.linkdist;', '}')