微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

igraph:为双向网络创建带有内部和外部节点的圆形布局

如何解决igraph:为双向网络创建带有内部和外部节点的圆形布局

我正在尝试绘制由二元入射矩阵构建的二部图,但我一直在努力做出正确的布局。发病率矩阵描述了11个真菌宿主中284个OTU的存在/不存在。

理想情况下,我想对11个主机进行圆形布局,其中共享的OTU及其边缘在“主机圈”内,而特定的OTU(即只有一个边缘的OTU)在“主机圈”之外。 Something like this Cytoscape plot from a similar study.

通过这种方式,可以更容易地解释哪些物种特定于某些宿主,哪些物种在其他宿主之间共享。

我试图创建两个圆形布局并将它们组合在一起,但是输出确实很混乱。我也尝试过将矩阵细分为两个图形,一个用于“外部节点”,即只有一个边缘的图形,另一个用于“内部节点”的图形。这是一个可以重现的示例:

library(igraph)
test<-matrix(sample(0:1,10,replace=T,prob=c(0.7,0.3)),nrow=284,ncol=11)
g<-graph.incidence(test) # creates similar igraph except mine is 'named'.
V(g)$size<-ifelse(V(g)$type,21,4) # easier to visualize
l1<-layout.circle(g,order=V(g)[1:284])
l2<-layout.circle(g,V(g)[285:295])
l3<-rbind(l1,l2*0.5)
plot(g,layout=l3)

### alternatively
out<-subset(test,rowSums(test)==1)
inn<-subset(test,rowSums(test)>1)
g.i<-graph.incidence(out)
g.o<-graph.incidence(inn)
# and so on...

我是igraph和Networks的新手,但我将不胜感激! :)

丽莎

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。