使用二分网络创建子图

时间:2017-03-04 14:50:38

标签: r rstudio igraph bipartite subgraph

我有一个电影和演员的数据集 - 每一行都是两者的组合。我想创建一个图表,当电影共享两个或更多演员时,电影会连接在一起。 actor的列表保存在actors.2000变量中。

我已经将演员作为顶点进行了这样的分析。现在我想以相反的方式做到这一点。但是,如果我将数据从actor更改为电影并采用bipartite.projection命令的proj1,indu.subgraph将返回一个空图。

library(igraph)
all.actors <- dt.movie.actor[, list(name=unique(actor), type=TRUE)]
all.movies <- dt.movie.actor[, list(name=unique(movie), type=FALSE)]

all.vertices <- rbind(all.actors, all.movies)
g.movie.actor <- graph.data.frame(dt.movie.actor[, list(movie, actor)],
                                 directed=FALSE,
                                 vertices=all.vertices)


g.actors <- bipartite.projection(g.movie.actor)$proj2


g.actors <- induced.subgraph(g.actors, vids = V(g.actors)$name %in% actors.2000)

我将电影作为顶点的图表代码如下所示。我首先查看演员参与的电影。然后我使用二分投影命令建立一个只有电影的网络。比我使用indu.subgraph命令只过滤movies.actors.2000矢量中的电影。

actors.2000 <- dt.awards.actor[award == "72nd_Annual_Academy_Awards__The_2000", 
                              actor]
movies.actors.2000 <- dt.movie.actor[actor %in% actors.2000, list(unique(movie))]
movies.actors.2000

g.movies <- bipartite.projection(g.movie.actor)$proj1
g.movies <- induced.subgraph(g.movies, vids = V(g.movies)$name %in% movies.actors.2000)

summary(g.movies)

但是,当我使用summary命令时,它会返回一个空图。我不知道我做错了什么。

任何可以帮助我的人?​​

0 个答案:

没有答案