2017-05-02 2 views
1

ggraph circlepack 레이아웃을 만들려면 어떤 데이터 형식이 필요합니까? 그것은 계층을 필요로하는 것 같습니다.ggraph 라이브러리의 서클 팩 레이아웃 사용 방법

정상적으로 정점과 노드를 시도했지만 분명히 작동하지 않습니다.

library(ggraph) 
library(igraph) 
edges=data.frame(from=c('a','b','c'), to= c('c','a','d')) 
vertices=data.frame(nodes=c('a','b','c','d'), weight=c(1,2,3,4)) 
graph <- graph_from_data_frame(edges, vertices = vertices) 
ggraph(graph, 'circlepack', weight = 'size') + 
geom_node_circle(size = 0.25, n = 50) + 
coord_fixed() 

다음 중 하나가 작동하지 않는 dendrogram 개체를 시도했습니다. 포장 된 원 안에 하위 항목이있는 여러 그룹을 표시하려면 그래프 개체를 어떻게 작성해야합니까?

데이터 프레임은 더이

df <- data.frame(group=c("a","a","b","b","b"), subitem=c("x","y","z,"u","v"), size=c(6,2,3,2,5)) 
+1

은 무엇인가' graph' 객체를'ggraph'에 넘깁니까? – yeedle

+0

그게 내가 알아 내려고하는거야. 마지막 줄에있는 df에 대해 어떻게 원형 레이아웃을 허용하는 그래프 객체로 만들 수 있습니까? 감사. 감사합니다. @yeedle. – santoku

답변

1

하는처럼 circlepack 레이아웃 모델 하나 개의 루트없이 사이클과 계층/트리 구조입니다. df을 circlepack 레이아웃으로 모델링하려면 group 열의 ab이 모두 뿌리임을 고려해야합니다. 우리는 안양에 뿌리를 추가하고 모두 ab 그 루트의 자녀가 될 경우, 우리는 circlepack로 시각화 할 수 있습니다 :


library(ggraph) 
library(igraph) 
library(dplyr) 


df <- data.frame(group=c("root", "root", "a","a","b","b","b"),  
       subitem=c("a", "b", "x","y","z","u","v"), 
       size=c(0, 0, 6,2,3,2,5)) 

# create a dataframe with the vertices' attributes 

vertices <- df %>% 
    distinct(subitem, size) %>% 
    add_row(subitem = "root", size = 0) 

graph <- graph_from_data_frame(df, vertices = vertices) 

ggraph(graph, layout = "circlepack", weight = 'size') + 
    geom_node_circle(aes(fill =depth)) + 
# adding geom_text to see which circle is which node 
    geom_text(aes(x = x, y = y, label = paste(name, "size=", size))) + 
    coord_fixed() 

+0

. 작은 원형에 '크기'또는 색상을 어떻게 전달할 수 있습니까? – santoku

+0

크기는 노드 또는 가장자리의 속성입니까? – yeedle

+0

노드 (하위 항목) – santoku