在visNetwork中添加图例以获取边缘颜色 [英] Adding a legend in visNetwork for edge color

查看:85
本文介绍了在visNetwork中添加图例以获取边缘颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using visNetwork to visualize a graph, but I need to introduce a legend based on the edge color. edge color is dependent on an edge attribute and its dynamic in nature. I tried to do with visGroups/visLegend, but got multiple errors. PFB reproducible example.

    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等.

I need legends as Red - A , Blue - C etc.

请帮助.

推荐答案

visLegend 首先是基于节点组的,但是您也可以手动设置节点和/或边缘图例.(?visLegend )

visLegend is first based on nodes groups, but you can also set nodes and/or edges legend manually. (?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)

这篇关于在visNetwork中添加图例以获取边缘颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆