在 visNetwork 中为边缘颜色添加图例

Adding a legend in visNetwork for edge color

我正在使用 visNetwork 可视化图形,但我需要根据边缘颜色引入图例。边缘颜色取决于边缘属性及其动态特性。我尝试使用 visGroups/visLegend,但遇到了多个错误。 PFB 可重现示例。

    library(igraph)
    library(visNetwork)
    gg <- graph.atlas(711)
    V(gg)$name=1:7
    gg=set_edge_attr(gg,"Department",E(gg)[1:10],c("A","B","C","A","E","C","G","B","C","A"))
    E(gg)$label=E(gg)$Department
    F2 <- colorRampPalette(c("red", "blue","orange","violet","cyan"), bias = length(unique(E(gg)$Department)), space = "rgb", interpolate = "linear")
    colCodes <- F2(length(unique(E(gg)$Department)))
    edges_col <- sapply(E(gg)$Department,function(x) colCodes[which(sort(unique(E(gg)$Department)) == x)])
    E(gg)$color <-edges_col
    datatest = toVisNetworkData(gg)
    visNetwork(datatest$nodes,datatest$edges) %>% visIgraphLayout(layout="layout_in_circle") 

我需要红色 - A 、蓝色 - C 等图例

请帮忙。

visLegend首先是基于节点分组,但也可以手动设置节点and/or边图例。 (?visLegend)

以你为例:

# data.frame from edges legend
ledges <- data.frame(color = unique(edges_col), 
                     label = unique(names(edges_col))) 

visNetwork(datatest$nodes,datatest$edges) %>% visIgraphLayout(layout="layout_in_circle") %>%
  visLegend(useGroups = F, addEdges = ledges)