微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 R 中创建二部图?

如何解决在 R 中创建二部图?

所以这个问题已经被问到 herehere...但我似乎无法适应我的问题。我正在尝试使用 R 中的 igraph 包创建一个二部图,看起来像这样:

graph

我用来尝试这个的代码是:

# create all pairs and turn into vector for graph edges
pairs <- expand.grid(1:6,1:6) # create all pairs
pairs <- pairs[!pairs$Var1 == pairs$Var2,] # remove matching rows
ed <- as.vector(t(pairs)) # turn into vecotr


# create graph
g <- make_empty_graph(n = 6)
g <- add_edges(graph = g,edges = ed)
plot(g)

这将创建一个图形...但我试图使它类似于图像中的图形,例如,顶部为 (1,2,3),底部为 (4,5,6) .

我尝试使用 make_bipartite_graph()layout_as_bipartite...但我似乎无法让它工作...有什么建议吗?

解决方法

如果图是直接从 data.frame 创建的,它就不是二部图。

library(igraph)

g <- graph_from_data_frame(df)
is.bipartite(g)
#[1] FALSE

但如果从关联矩阵创建,它将是一个二部图。

tdf <- table(df)
g <- graph.incidence(tdf,weighted = TRUE)
is.bipartite(g)
#[1] TRUE

现在绘制它。

colrs <- c("green","cyan")[V(g)$type + 1L]
plot(g,vertex.color = colrs,layout = layout_as_bipartite)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。