标签: igraph

networkx/igraph上指定的边长(Python)

我想用我拥有的数据可视化网络,并希望用特定的边长来绘制它们.我使用Python,我已经尝试使用networkx和igraph进行绘图,但所有似乎都分配了固定的边长.

a.)我想知道我的代码是错误的还是包裹不是真的有能力.如何正确实现networkx或igraph的指定边长?

b.)如果networkx和igraph无法做到,您可以建议哪个包?(最好能携带超过8万个节点.)

谢谢!

python graphviz igraph networkx

8
推荐指数
1
解决办法
7586
查看次数

在igraph中基于源/目标选择边

有没有一种简单的方法可以根据igraph中的源和目标选择/删除边缘?

我使用的基本上是

g.es["source"] = [e.source for e in g.es]
g.es["target"] = [e.target for e in g.es]    
g.es["tuple"]  = [e.tuple  for e in g.es]        

g.es.select(target=root)
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有一种方法可以做到这一点,而无需两次存储源/目标信息.

python igraph

8
推荐指数
1
解决办法
4211
查看次数

r中的igraph包:边缘标签重叠

我正在使用R中的igraph包来可视化网络流.

library(igraph)

# Example Data:
b <- c("countryA", "countryB", "countryC", "countryA", "countryC", "countryA")
c <- c("countryB", "countryC", "countryA", "countryB", "countryA", "countryB")
d<- c(100, 200, 200, 300, 400, 200)
e <- c(5,12,10,24,25,12)
mydata <- data.frame(b,c,d,e)
colnames(mydata) <- c("exporteur", "partner", "tradeflow", "price")

# Plot in igraph
mydata.igraph <- graph.data.frame(mydata)
E(mydata.igraph)$label <- mydata[,3]
plot(mydata.igraph)
Run Code Online (Sandbox Code Playgroud)

如您所见,我的边缘标签(箭头标签)重叠.怎么解决这个?

提前致谢!

plot r igraph

8
推荐指数
1
解决办法
6940
查看次数

如何在python中找到由iGraph创建的图形中的顶点数?

我正在编写一个接收图形作为输入的函数.我需要做的第一件事是确定图的顺序(即图中的顶点数).

我的意思是,我可以使用g.summary()(返回包含顶点数量的字符串),但是我会解析字符串以获得顶点的数量 - 而这只是令人讨厌的.

获得我正在使用的边数len(g.get_edgelist()),这是有效的.但是没有g.get_vertexlist(),所以我不能使用相同的方法.

当然,有一种简单的方法可以做到这一点,不涉及解析字符串.

python igraph

8
推荐指数
2
解决办法
1万
查看次数

在igraph中按簇聚集图形

我想将图表折叠到各自的社区/群集中.让我用以下玩具示例来说明这一点:

set.seed(123)

#toy graph
g <- barabasi.game(10) %>%
  as.undirected()

#identify communities 
c_g <- fastgreedy.community(g) 
Run Code Online (Sandbox Code Playgroud)

有三个社区,如下图所示.

在此输入图像描述

我想减少顶点的折叠,以便结果图中的顶点对应于先前顶点的成员资格.见图表.

在此输入图像描述

我是新手igraph包,我不熟悉处理igraph对象的最佳方法.

r igraph

8
推荐指数
1
解决办法
673
查看次数

igraph - 作为子图的邻居 - make_ego_graph()作为单个图

我想构建一个有向网络图的子图,其中所有顶点共享一个顶点属性(比如,V(Grph)$ year =="1952")和它们的一阶(立即)邻居,基于只有在外面.

我试过ego(),make_ego_graph(),neighbors(),和adjacent_vertices().

例如, CitGraph <- make_ego_graph(Grph, 1, nodes = which(V(Grph)$year=="1952"), mode = "out") 产生一个图表列表(而不是单个综合图表),并且令人惊讶的是,今年50k顶点需要两个小时,并且指向了150k个邻居.

我能想到的一种方法是聚合列表中的所有这些图,但不知道如何.此外,我想保留顶点属性,因为我的最终目标是assortativity_nominal()根据另一个顶点属性(在这种情况下为地理位置)进行计算.

预先感谢您提出的任何建议!

r igraph network-analysis

8
推荐指数
1
解决办法
2932
查看次数

去掉R中图形图中的顶点标签

我正在开展一个小项目,涉及查找图表的社区结构和绘图.我正在使用label.propagation.community算法进行社区检测,并使用以下代码行进行绘图:

plot(community_1, graph_1)
Run Code Online (Sandbox Code Playgroud)

它正如预期的那样工作,给出了以下情节.在此输入图像描述.

问题是图表显示了使得图表看起来更拥挤的顶点标签.有什么办法可以摆脱剧情中的这些标签吗?我不想修改图表和社区中的任何内容; 只是想告诉情节不要打印标签.

plot r igraph

8
推荐指数
1
解决办法
6983
查看次数

使用igraph基于边缘属性添加多个边缘

我想知道,使用时igraph,可以根据不同边缘属性的值将边添加到图形中.

我有一个data.frame,dput如下所示:

df <- structure(list(nodeA = c("CFTR", "CFTR", "CFTR", "CFTR", "CFTR", 
"CFTR"), nodeB = c("CYP7A1", "KRT16", "ABCA3", "SLC22A11", 
"PBK", "ACSM1"), score = c(0.239, 0.24, 0.292, 0.269, 
0.233, 0.168), text = c(129L, 0L, 287L, 246L, 
161L, 155L), mining = c(163L, 241L, 413L, 71L, 92L, 56L), 
experiments = c(0L, 0L, 101L, 0L, 75L, 0L), homologs =c(0L, 
0L, 609L, 0L, 0L, 0L)), .Names = c("nodeA", "nodeB", 
"score", "text", "mining","experiments", 
"homologs"), class = "data.frame", row.names = c(NA, 6L))
Run Code Online (Sandbox Code Playgroud)

我想在图(g …

r igraph

8
推荐指数
1
解决办法
508
查看次数

删除没有边的自循环和顶点

我正在构建一个基因网络.我有一个两列数据框,我转换成和邻接矩阵,并在igraph中使用它.问题是我有自我循环的基因,我想摆脱自我循环,然后摆脱没有边缘(可能与网络隔离)的顶点.我尝试了一些东西,但不知怎的,它们不起作用.我的代码是

 InnatedGraph <- graph.data.frame(innate,directed=FALSE)
 V(InnatedGraph)$label.cex = 0.4
 plot(InnatedGraph,vertex.label=V(InnatedGraph)$symbol, vertex.size=5)
Run Code Online (Sandbox Code Playgroud)

先天是我的两列数据框架.我已经尝试过度函数去除0度的顶点,但我猜不幸它不起作用(也许becoz自环基因有1度).

bad.vs<-V(InnatedGraph)[degree(InnatedGraph) == 0] 
clean <-delete.vertices(InnatedGraph, bad.vs)
Run Code Online (Sandbox Code Playgroud)

我尝试使用包装BioNet"rmSelfLoops"中的另一个函数,借助它我可以移除自循环边但仍然无法移除没有边的顶点.

test<-rmSelfLoops(InnatedGraph)
Run Code Online (Sandbox Code Playgroud)

我还将包含我的网络图片,以便更容易理解.在此输入图像描述

r igraph

8
推荐指数
1
解决办法
8300
查看次数

根据图中的两个随机遍历构建矩阵

我正在研究一个项目,但是我达到了这一点,但实际上我在一周前就被困在了它上面,我尝试了很多想法,但所有试验来编码我的算法都失败了.

假设我们有以下简单图: 在此输入图像描述

为了边缘是:1--3,1--4,3--2

对于每个边,在每个顶点上定义随机游走以移动到其中一个邻居,如:

对于第一个边缘,v1=1 ,v2=3, n1=3,4n2=1,2在顺序,因此从v1和v2中的可能动作是:

1 to 3,3 to 1
1 to 4,3 to 1
1 to 3,3 to 2
1 to 4,3 to 2
Run Code Online (Sandbox Code Playgroud)

对于第二边缘,v1=1 ,v2=4, n1=3,4n2=1在顺序,因此从v1和v2中的可能动作是:

1 to 3,4 to 1
1 to 4,3 to 1
Run Code Online (Sandbox Code Playgroud)

对于第三边缘,v1=3 ,v2=2, n1=1,2n2=3在顺序,因此从v1和v2中的可能动作是:

3 to 1,2 to 3
3 to 2,2 to 3
Run Code Online (Sandbox Code Playgroud)

对于整个图形,只有8个可能的移动,因此我有8个变量来构造约束矩阵

让我们用x表示移动(根据它们的出现顺序); 即

(1 to 3,3 to …
Run Code Online (Sandbox Code Playgroud)

algorithm optimization r matrix igraph

8
推荐指数
1
解决办法
229
查看次数