Add a legend on a visNetwork object
visLegend(
graph,
enabled = TRUE,
useGroups = TRUE,
addNodes = NULL,
addEdges = NULL,
width = 0.2,
position = "left",
main = NULL,
ncol = 1,
stepX = 100,
stepY = 100,
zoom = TRUE
)
: a visNetwork object
: Boolean. Default to TRUE.
: use groups options in legend ? Default to TRUE.
: a data.frame or a list for adding custom node(s)
: a data.frame or a list for adding custom edges(s)
: Number, in [0,...,1]. Default to 0.2
: one of "left" (Default) or "right"
: For add a title. Character or a named list.
"text" : Character. Title.
"style" : Optional. Character. HTML style of title. Default to 'font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:14px;text-align:center;'.
: Divide legend in multiple columns ? Default to 1
: Experimental. Can use to control space between nodes. Default to 100
: Experimental. Can use to control space between nodes. Default to 100
: Boolean. Enable zoom on legend ? Default to TRUE
See online documentation https://datastorm-open.github.io/visNetwork/
visNodes for nodes options, visEdges for edges options, visGroups for groups options, visLegend for adding legend, visOptions for custom option, visLayout & visHierarchicalLayout for layout, visPhysics for control physics, visInteraction for interaction, visNetworkProxy & visFocus & visFit for animation within shiny, visDocumentation, visEvents, visConfigure ...
# minimal example
nodes <- data.frame(id = 1:3, group = c("B", "A", "B"))
edges <- data.frame(from = c(1,2), to = c(2,3))
# default, on group
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", color = "red") %>%
visGroups(groupname = "B", color = "lightblue") %>%
visLegend()
# on group, adding options
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", color = "red") %>%
visGroups(groupname = "B", color = "lightblue") %>%
visLegend(width = 0.1, position = "right", main = "Legend")
# css on main
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", color = "red") %>%
visGroups(groupname = "B", color = "lightblue") %>%
visLegend(main = list(text = "Custom Legend",
style = "font-family:Comic Sans MS;color:#ff0000;font-size:12px;text-align:center;"))
# passing custom nodes and/or edges
lnodes <- data.frame(label = c("Group A", "Group B"),
shape = c( "ellipse"), color = c("red", "lightblue"),
title = "Informations")
ledges <- data.frame(color = c("lightblue", "red"),
label = c("reverse", "depends"), arrows =c("to", "from"),
font.align = "top")
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", color = "red") %>%
visGroups(groupname = "B", color = "lightblue") %>%
visLegend(addNodes = lnodes, addEdges = ledges, useGroups = FALSE)
# divide in columns
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", color = "red") %>%
visGroups(groupname = "B", color = "lightblue") %>%
visLegend(addNodes = lnodes, useGroups = TRUE, ncol = 2)
# for more complex option, you can use a list(of list...)
# or a data.frame with specific notaion
nodes <- data.frame(id = 1:3, group = c("B", "A", "B"))
edges <- data.frame(from = c(1,2), to = c(2,3))
# using a list
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", shape = "icon", icon = list(code = "f0c0", size = 75)) %>%
visGroups(groupname = "B", shape = "icon", icon = list(code = "f007", color = "red")) %>%
addFontAwesome() %>%
visLegend(addNodes = list(
list(label = "Group", shape = "icon", icon = list(code = "f0c0", size = 25)),
list(label = "User", shape = "icon", icon = list(code = "f007", size = 50, color = "red"))
),
addEdges = data.frame(label = "link"), useGroups = FALSE)
# using a data.frame
addNodes <- data.frame(label = c("Group", "User"), shape = "icon",
icon.code = c("f0c0", "f007"), icon.size = c(25, 50), icon.color = c(NA, "red"))
visNetwork(nodes, edges) %>%
visGroups(groupname = "A", shape = "icon", icon = list(code = "f0c0", size = 75)) %>%
visGroups(groupname = "B", shape = "icon", icon = list(code = "f007", color = "red")) %>%
addFontAwesome() %>%
visLegend(addNodes = addNodes,
addEdges = data.frame(label = "link"), useGroups = FALSE)