在 R 中使 visnetwork 图的边缘笔直

Ada*_*haw 3 javascript r igraph vis.js visnetwork

给定的 visNetwork 脚本创建 visNetwork 图,如下面的快照所示。我的问题是,如果您看到第一个和第二个节点,则两者之间的边缘是弯曲的。有没有一种方法可以使边缘变直而不改变边缘的长度。附上截图供参考,请帮忙。

library(visNetwork)
nodes <- data.frame(id = 1:10,color = c(rep("blue",6), rep("red",3), 
rep("green",1)))
edges <- data.frame(from = c(1,2,3,3,4,5,6,7,8,9), to = 
c(2,3,4,8,5,6,7,8,9,10),length = c(2,1,1,1,1,1,1,1,1,1))
nodes = data.frame(nodes, level = edges$from)
visNetwork(nodes, edges, height = "500px", width = "100%") %>% 
visOptions(highlightNearest = list(enabled = T, degree = 2, hover = T)) %>%
visOptions(highlightNearest = F, nodesIdSelection = F, width = 500, height = 
500,autoResize = F) %>%
visEdges(smooth = T) %>% 
addFontAwesome() %>% visHierarchicalLayout(edgeMinimization = T,  
blockShifting = T , levelSeparation = 89 ) %>% 
visEdges(shadow = TRUE,
         arrows =list(to = list(enabled = TRUE, scaleFactor = 2)),
         color = list(color = "black", highlight = "red")) %>%
visLayout()
Run Code Online (Sandbox Code Playgroud)

Visnetwork捕获图

kna*_*ply 5

只需将visEdges()smooth=参数设置为FALSEvisEdges(smooth = FALSE)

library(visNetwork)

nodes <- data.frame(id = 1:10,color = c(rep("blue",6), 
                                        rep("red",3), 
                                        rep("green",1)))
edges <- data.frame(from = c(1,2,3,3,4,5,6,7,8,9),
                    to = c(2,3,4,8,5,6,7,8,9,10),
                    length = c(2,1,1,1,1,1,1,1,1,1))
nodes <- data.frame(nodes, level = edges$from)

visNetwork(nodes, edges, 
           height = "500px", width = "100%",
           main = "Straight Edges") %>% 
  visHierarchicalLayout(edgeMinimization = T,
                        blockShifting = T , 
                        levelSeparation = 89 ) %>%
  visEdges(
    # =========================
           smooth = FALSE, # ========================= straight edges
    # =========================
           shadow = TRUE,
           arrows =list(to = list(enabled = TRUE, scaleFactor = 2)),
           color = list(color = "black", highlight = "red")
    )
Run Code Online (Sandbox Code Playgroud)

直边可视化