我尝试绘制一个二分网络,其边缘与其中一个节点的颜色相同。
例如,我们以一个电影/演员二分图为例,有 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)
返回"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)
返回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个节点的第一种颜色)?
我希望我已经说清楚了。