Reputation: 519
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()
Upvotes: 3
Views: 1842
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")
)
Upvotes: 5