2017-05-26 111 views
1

我嘗試繪製一個雙邊網絡,其邊緣顏色與其節點之一相同。
例如,我們以電影/演員二部圖爲例,共有7部電影和15個演員,每個演員都有國籍。
我想在演員和電影的顏色比演員的國籍相同。選擇顏色ggraph R

NG1 <- 7 
NG2 <- 15 
Nat <- sample(x = c("French", "English", "Italian", "American", "Chinese"), size = NG2, replace = T) 
G <- graph.empty(NG1+NG2) 

[這裏,head(Nat)返回"Italian" "English" "American" "French" "French" "French"]
的代碼來創建EdgeList都:

E1 <- sample(x=1:NG1, size = 30, replace = T) 
E2 <- sample(x=(NG1+1):(NG1+NG2), size = 30, replace = T) 
EL <- c(rbind(E1, E2)) 
G <- add_edges(G, EL, nat = Nat[E2-NG1]) 

[這裏,head(EL)返回1 14 3 13 2 15]
不同AES參數:

GROUP <- c(rep("Movie", NG1), rep("Act", NG2)) 
COL <- c(rep("Movie", NG1), Nat) 
TXT <- c(as.character(1:NG1), letters[1:NG2]) 

現在,ggraph i nstructions:

ggraph(G, layout = 'kk') + 
     geom_node_point(aes(col = COL, shape = GROUP, size = 7)) + 
     geom_edge_link(aes(col = nat)) + 
     geom_node_text(aes(label = TXT), size = 4) 

Plot

正如你可以在底部,一個演員,這是意大利有一個藍色的節點,但與粉色邊連接帶電影7看看...我如何指定節點(這裏是6種顏色)和邊緣(節點的5種第一種顏色)的調色板?

我希望我已經說清楚了。

回答

1

兩個小時後,我終於找到了解決方案!

我以前定義here模擬用於節點,然後將6種顏色的功能gg_color_hue

+ scale_edge_colour_manual(values = cols[1:5])