问题描述
我想根据原始数据框中的属性为图的节点着色。但是我认为我还没有“实现”这个审美变量。
有效的示例:
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.mapping
或TRUE
一致地添加到不同类型的每个顶点。