igraph ggraph r中的颜色节点

问题描述

我想根据原始数据框中的属性为图的节点着色。但是我认为我还没有“实现”这个审美变量。

有效的示例:

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

data <-
  tibble(
    from = c("a","a","b","c"),to = c(1,2,3,1,4,2),type = c("X","Y","X","X")
  )

graph <-
  graph_from_data_frame(data)

ggraph(graph,layout = "fr") +
  geom_node_point() +
  geom_edge_link() 

我想要类似geom_node_point(aes(color = type))之类的东西,但是还没有在图形中使类型可查找吗?

解决方法

这里的问题是,您将type列添加为边缘属性,而geom_node_point需要一个顶点属性(请参见?graph_from_data_frame其他列被视为边缘属性属性。)。 另一个问题是type与任一节点列都不相同(例如a与类型X以及Y也相关,节点{{1}也是如此}。

要解决第一个问题,您可以在2函数的vertices参数中添加其他顶点信息。

解决这两个问题的最简单解决方案是在创建图形之后添加type属性:

graph_from_data_frame

data <- tibble( from = c("a","a","b","c"),to = c(1,2,3,1,4,2) ) graph <- graph_from_data_frame(data) V(graph)$type <- bipartite.mapping(graph)$type 函数将bipartite.mappingTRUE一致地添加到不同类型的每个顶点。