Adam Shaw
Adam Shaw

Reputation: 519

Making the edges of the visnetwork diagram straight in R

The given visNetwork script creates the visNetwork plot as in the snapshot below. My issue is such that if you see the first and second node, the edge between the two is curved. Is there a way I can possibly make the edges straight without changing the length of the edge. Attaching the snapshot for reference, Please help.

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()

Visnetwork capture diagram

Upvotes: 3

Views: 1842

Answers (1)

knapply
knapply

Reputation: 667

Just set visEdges()'s smooth= argument to FALSE: visEdges(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")
    )

Straight Edges Visualization

Upvotes: 5

Related Questions