选择颜色ggraph R

时间:2017-05-26 14:01:06

标签: r ggplot2 ggraph

我尝试绘制一个二分网络,其边缘颜色与其节点相同 例如,让我们以电影/演员二分图作为例子,有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)

Plot

正如你在底部看到的那样,演员a,Italien有一个蓝色节点,但是用电影7连接粉红色的边缘...我怎样才能指定节点的调色板(这里有6种颜色)和边缘(节点的5种第一种颜色)?

我希望我已经说清楚了。

1 个答案:

答案 0 :(得分:1)

两个小时后,我终于找到了解决方案!

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

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