我正在使用igraph中的网络,我有一个网络,其中有短的连接节点,彼此重叠,所以我们不要exaclt看到边缘。我想删除这样的短连接节点,因为它们没有连接到主网络。由于节点不是0度,因此度数不起作用,它们或者连接到一个或多个基因但仍然不在主网络中。即使主网络显示一些重叠基因,我也想纠正它。
net <- simplify(InnatedGraph, remove.multiple = T, remove.loops = T, )
bad.vs<-V(net)[degree(net) == 0]
net <-delete.vertices(net, bad.vs)
plot(net,vertex.label=NA, edge.curved=.1, edge.width = 1,edge.arrow.width = 0.3,vertex.size = 3,asp=-1,edge.arrow.size = 0.5,vertex.label.cex = 0.3)
这样的网络
您在主网络周围看到的基因不是孤立的节点,而是连接到其他重叠的节点。是否有办法删除这些基因并防止主网络重叠。
答案 0 :(得分:5)
你想要main component。首先,找到组件,然后根据这些组件对图形进行子集化。 g是你的网络:
V(g)$comp <- components(g)$membership
main <- induced_subgraph(g,V(g)$comp==1)
就重叠节点而言,请查看igraph中可用的不同布局。 ?igraph::layout
。
答案 1 :(得分:2)
您需要主要/最大的组件,不一定是id == 1的第一个组件
main <- induced_subgraph(
g, V(g)[components(g)$membership == which.max(components(g)$csize)]
)