[英]Select Specific Node NetworkD3
有沒有辦法使用 NetworkD3 選擇特定節點以更改其顏色?
這是我的代碼。 我想使用customJS來實現!
p <- forceNetwork(Links = links,
Nodes = nodes,
Source = 'source',
Target = 'target',
NodeID = 'name',
Group = 'group',
Value = "value",
Nodesize = 'size',
radiusCalculation = JS("d.nodesize/2"),
zoom = TRUE,
arrows = FALSE,
linkWidth = JS("function(d){return d.value;}"),
linkDistance = JS("function(d){return d.value*100}"),
charge = gravity,
opacity = 0.95,
fontSize = 24,
bounded = FALSE,
linkColour = "#424242"
)
customJS <-
"function() {
d3.selectAll('.node text').style('fill', 'white').attr('stroke-width', '.1px').attr('stroke', '#3f3f3f');
d3.select('body').style('background-color', '#15171A');
simulation = this;
simulation.stop();
for (var i = 0; i < 300; ++i) simulation.tick();
simulation.restart();
}"
g <- htmlwidgets::onRender(p, customJS)
控制節點顏色的規范方法是使用Group
參數在nodes
data.frame 中指定一個列,該列為每個節點指定一個組。 您可以在一個唯一的組中擁有一個節點和/或您可以在一個組中擁有多個節點,並且您可以擁有任意數量的組(至少假設,但顯然受限於您的機器資源和顏色數量/可以有效地在您的屏幕上看到的組)。
默認情況下,每個組的顏色都是從默認的 D3 調色板中自動選擇的。 如果要指定不同的調色板,或者要為特定組指定特定顏色,可以修改colourScale
參數的默認值。
library(networkD3)
data(MisLinks)
data(MisNodes)
MisNodes$group <- ifelse(as.character(MisNodes$name) > "M", "group_1", "group_2")
colourScale <- 'd3.scaleOrdinal().domain(["group_1", "group_2"]).range(["#FF0000", "#0000FF"]);'
forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = 1, colourScale = colourScale)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.