如何绘制选定的igraph节点?
我有一个现有的图表,但它太复杂了。我希望能够“放大”节点的子集。
我能够删除边缘的子集,但我无法弄清楚如何“关闭”孤立的节点。
使用网络包时,displayisolates=FALSE
参数执行此操作;它不会显示这些孤立的节点。
布局算法也应该忽略'关闭'边缘。
例如:
g1 <- graph( c( 0,1, 1,2, 2,2, 2,3 ) )
g2 <- delete.edges(g1, E(g1, c(0,1)))
plot(g2)
绘制g2时,我想不显示节点0。
由于
答案 0 :(得分:7)
我知道用户不应该提交新的答案来评论其他答案,但我的编辑被拒绝,而且我没有足够的声誉留下评论。
我只是想指出,在上面的Wine的答案中,从igraph 0.6开始,并不需要在deletes.isolates函数中进行“-1”索引校正。另见Tamas的评论:
答案 1 :(得分:3)
delete.isolates <- function(graph, mode = 'all') {
isolates <- which(degree(graph, mode = mode) == 0) - 1
delete.vertices(graph, isolates)
}
在你的情况下,如果使用参数mode ='in',那么使用g1运行它将删除第一个顶点,如果使用参数mode ='out',则删除最后一个顶点。
所以在你的情况下,如果你输入了:
g2 <- delete.isolates(g1, mode = 'in')
plot(g2)
你应该得到你想要的东西。我没有太多使用igraph,所以很有可能这个函数会遇到其他图形的一些问题。
P.S。这也给出了一种奇怪的结果,即在新的g2中,第一个顶点现在是基于indegree的隔离。在大多数情况下,此功能可能没用,但可能有助于制作更清晰的情节。
答案 2 :(得分:1)
iso <- V(g1)[degree(g1)==0]
g2 <- delete.vertices(g1, iso)