选择颜色 ggraph R

Choose color ggraph R

我尝试绘制一个二分网络,其边的颜色与其中一个节点的颜色相同。
例如,我们以movie/actor二分图为例,有7部电影,15个演员,每个演员都有一个国籍。
比起演员的国籍,我更想在演员和同色电影之间有缘

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

[这里,head(Nat) returns "Italian" "English" "American" "French" "French" "French"]
创建边缘列表的代码:

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) returns 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 说明:

 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)

正如你在底部看到的,意大利演员 a 有一个蓝色节点,但与电影 7 的粉红色边缘相连......我如何指定节点的调色板(这里有 6 种颜色) 和边(节点的前 5 种颜色)?

希望我说清楚了。

经过两个小时,我终于找到了解决办法!

我使用 gg_color_hue 定义的函数 here 来模拟用于节点的 6 种颜色,然后:

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