【发布时间】:2019-03-03 08:34:55
【问题描述】:
在我的代码中,绘制整个二部图比单独绘制一个投影所需的时间要少得多(当然,它的节点比二部图少,因为它只是二部图的一部分)。怎么可能?
代码如下:
rm(list=ls())
library(igraph)
library(tictoc)
nodes <- read.csv("./ma_nodes.csv", header=T, as.is=T)
links <- read.csv("./ma_edges.csv", header=T, as.is=T)
nodes$type <- as.logical(nodes$IsInvestor)
net <- graph_from_data_frame(d=links, vertices=nodes, directed=T)
net.bp <- bipartite_projection(net, multiplicity=F)
net.prj1 = net.bp$proj1
net.prj2 = net.bp$proj2
tic("Plotting bibpartite net")
plot(net)
toc()
tic("Plotting prj2")
plot(net.prj2)
toc()
tic("Plotting prj1")
plot(net.prj1)
toc()
结果如下:
Plotting bibpartite net: 5.04 sec elapsed
Plotting prj2: 0.21 sec elapsed
Plotting prj1: 77.9 sec elapsed
还要注意,使用 Sys.time() 来测量时间(并取不同的结束时间 - 开始时间),不会捕获此效果。但事实并非如此:绘制最后一张图比绘制其他两张图需要更多时间。这是 sys.time() 的问题,无法捕获(但可能是另一个问题)
这是怎么回事?
【问题讨论】:
标签: r plot igraph graph-theory