使用visnetwork重新创建层次结构树

问题描述 投票:0回答:1

我尝试使用 visNetwork 包重新创建下面的层次结构树,如您在图像中看到的那样,但我无法设置位置的层次结构。

# Install and load the visNetwork package
install.packages("visNetwork")
library(visNetwork)
# Create nodes data frame
nodes <- data.frame(
  id = 1:7,
  label = c("BLADDER", "TRODELVY", "EV", "NO ADC RECEIVED", "EV", "NO ADC RECEIVED", "TRODELVY "),
  color = c("gray", "red", "blue", "gray", "blue", "gray", "red"),
  shape = "box"
)

# Create edges data frame
edges <- data.frame(
  from = c(1, 1, 2, 2, 3, 3),
  to = c(2, 3, 4, 5, 6, 7)
)

# Create the network visualization
visNetwork(nodes, edges) %>%
  visNodes(shape = "box") %>%
  visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)%>%
  visPhysics(solver = "hierarchicalRepulsion", 
             forceAtlas2Based = list(gravitationalConstant = -500))

enter image description here

r visnetwork
1个回答
0
投票

您还需要在

level
中设置
nodes
定义并使用
visHierarchicalLayout
。然而,如果没有更复杂的黑客技术,获得“90 度”边缘可能是不可能的。

enter image description here

library(visNetwork)
# Create nodes data frame
nodes <- data.frame(
  id = 1:7,
  label = c("BLADDER", "TRODELVY", "EV", "NO ADC RECEIVED", "EV", "NO ADC RECEIVED", "TRODELVY "),
  color = c("gray", "red", "blue", "gray", "blue", "gray", "red"),
  shape = "box",
  level = c(1, 2, 2, 3, 3, 3, 3)
)

# Create edges data frame
edges <- data.frame(
  from = c(1, 1, 2, 2, 3, 3),
  to = c(2, 3, 4, 5, 6, 7)
)

# Create the network visualization
visNetwork(nodes, edges) %>%
  visNodes(shape = "square", size = 500, font = list(color = "white")) %>%
  visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)%>%
  visHierarchicalLayout(levelSeparation = 200, direction = "LR") 
© www.soinside.com 2019 - 2024. All rights reserved.