【发布时间】:2026-02-18 17:25:03
【问题描述】:
我在使用库 igraph 在 R 中实现二分网络时遇到了一些问题。这是我的脚本:
library(igraph)
library(reshape2)
setwd("....")
getwd()
library(readxl)
network=read_excel("network1.xlsx")
print(network)
subjects=as.character(unlist(network[,1]))
agents=colnames(network[-1])
print(network)
network = network[,-1]
g=graph.incidence(network, weighted = T)
V(g)$type
V(g)$name=c(subjects,agents)
V(g)$color = V(g)$type
V(g)$color=gsub("FALSE","red",V(g)$color)
V(g)$color=gsub("TRUE","lightblue",V(g)$color)
plot(g, edge.arrow.width = 0.3,
vertex.size = 5,
edge.arrow.size = 0.5,
vertex.size2 = 5,
vertex.label.cex = 1,
vertex.label.color="black",
asp = 0.35,
margin = 0,
edge.color="grey",
edge.width=(E(g)$weight),
layout=layout_as_bipartite)
网络绘制正确
如你所见
但是我有两个问题
(1) 我不明白图中顶点的显示顺序。它们与excel文件的顺序不同,既不是字母顺序也不是数字顺序。它们似乎是随机排列的。如何选择顶点的放置顺序?
(2) 我不明白为什么有些顶点更靠近,而有些则更远。我会在相同距离的所有顶点。我该怎么办?
非常感谢您的宝贵帮助。
【问题讨论】:
-
我们没有您的文件
network1.xlsx,因此我们无法运行您的示例。为了帮助我们帮助您,请运行您的代码来创建变量网络(直到并包括行network = network[,-1])。然后运行 dput(network)并将结果粘贴到您的问题中,以便我们为您的示例提供帮助。