如何在R中绘制具有指定起点的有向图

时间:2015-05-25 08:49:23

标签: r igraph directed-graph

这是我用来测试的数据,在graph.txt中:

1 2
1 3
2 5
3 4
3 5
4 5
5 6
5 10
6 7
7 8
7 9
7 12
8 9
9 10
9 4
9 12
10 11
11 2
11 12

我使用graph.data.frame绘制有向图。代码是:

 xlist<-read.table("graph.txt")
 xlist <- graph.data.frame(xlist)
 plot(xlist)

它只能绘制如下图形 enter image description here 但我只想绘制起点为5,即5->6->...和“5->10->...,我该如何做到这一点

2 个答案:

答案 0 :(得分:1)

使用igraph包,以下工作:

xlist<-read.table("graph.txt")
xlist.sub <- subset(xlist,V1>=5)
xlist.sub <- graph.data.frame(xlist.sub)
plot(xlist.sub)

从数据框中删除具有小于5的节点作为其根的所有列就足够了。在应用graph.data.frame之前进行子集化非常重要。

答案 1 :(得分:1)

有很多方法可以排除1到4.这是另一种方法:

xlist<-read.table(text = "1 2
1 3
2 5
3 4
3 5
4 5
5 6
5 10
6 7
7 8
7 9
7 12
8 9
9 10
9 11
9 12
10 11
11 7
11 12")
library(igraph)
g <- graph.data.frame(xlist)
set.seed(1)
coords <- layout.fruchterman.reingold(g)
par(mfrow = c(1, 2))
plot(g, layout = coords)
plot(induced.subgraph(g, setdiff(V(g), 1:4)), 
     layout = coords[-(1:4), ])

enter image description here