2016-07-27 3 views
0

그래프를 시각화하기 위해 visNetwork를 사용하고 있지만 가장자리 색상을 기반으로 범례를 소개해야합니다. 에지 컬러는 본질적으로 에지 속성 및 그 다이내믹에 의존한다. 나는 visGroups/visLegend와 함께하려했지만 여러 오류가 발생했습니다. PFB 재현 가능한 예입니다. A, 블루 - - C 등가장자리 색상에 대한 visNetwork의 범례 추가

친절하게 도움

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

나는 레드와 같은 전설이 필요합니다.

+0

이 재현되지 않습니다 다음에'VisNetworkData' 기능은 무엇인가? – Jason

+0

노골적으로, 나는 도서관 (visNetwork)을 포함하기를 놓쳤다. 지금 예제에 추가했습니다. visNetworkData는 그래프 정점과 노드를 visNetwork에 적용 할 수있는 형식으로 변환하는 함수입니다. – hr02

답변

3

visLegend은 노드 그룹을 기반으로하지만 노드 및/또는 가장자리 범례를 수동으로 설정할 수도 있습니다. 예를 들어 당신을 위해 (?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) 
+0

감사합니다. 그것은 효과가 있었다. – hr02

+0

다른 사용자가 같은 문제를 검색하는 데 도움이되는 대답을 수락해야합니다. – vincentmajor