如何仅将数字节点大小属性分配给边缘列表的一列?

时间:2019-06-04 18:50:21

标签: r igraph

我正在用igraph绘图,并且很难用节点大小的属性进行绘图。

我尝试从csv文件中添加大小属性数据,并指示该数据仅适用于边缘列表的一列(边缘列表的另一列具有单独的属性文件)。但是当我尝试绘图时,我收到一条错误消息。

边沿数据:

el[,"org"]=as.character(el[,"org"])
el[,"office"]=as.character(el[,"office"])
el=as.matrix(el)
g=graph.edgelist(el[,1:2])

尺寸属性:

V(g)$cont_amt=as.numeric(b$cont_amt[match(V(g)$name,b$org)])
V(g)$size=V(g)$cont_amt

V(g)$size <- ifelse(V(g)$size %in% el[,1], V(g)$size, NA)

尝试绘制:
plot(g, layout=m, edge.arrow.size=.2, vertex.label.font=1, vertex.label.cex=.9, vertex.label.color="black")

我绘制时一直收到此错误消息:plot.window(...)中的错误:需要有限的'xlim'值

1 个答案:

答案 0 :(得分:0)

该问题与this one中的评论有关。 考虑下面的最小工作示例:

library(igraph)
a <- 1:4
b <- letters[1:4]
edgelist <- cbind(a,b)
g <- graph_from_edgelist(edgelist)


在这里,我只是从边缘列表生成了一个随机图。 下一步是根据edgelist第一栏中节点名称的出现情况来设置节点大小。该条件指出名称必须与第一列中的项目匹配。如果是,则将大小增加到16;如果否,则使用已经指定的大小。

V(g)$size <- 8 
V(g)$size <- ifelse(test = V(g)$name %in% edgelist[,1], yes = 16, no =  V(g)$size)

这会导致edgelist第一列中的节点的大小更大 different sized nodes