标签: igraph

从 numpy 求和二维数组创建加权 igraph 图作为邻接矩阵

我有一个numpy二维数组,其值代表节点之间的边的权重。该矩阵是对称的,我取对角线为零。我没有找到如何将此矩阵转换为 igraph 图形对象的示例。我尝试过以下方法,但它不起作用:

import numpy as np
import igraph

def symmetrize(a):
    return a + a.T - 2*np.diag(a.diagonal())

A = symmetrize(np.random.random((100,100)))

G = igraph.Graph.Adjacency(A.tolist())
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matrix igraph

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

创建具有孤立节点的 igraph

我有一个与此类似的问题:Reading adjacencylists withisolatednodesusingigraph

我想绘制一些没有关系的节点。但由于某种原因,上面线程中提到的解决方案不起作用

我的数据

data <- data.frame(ID = c(143918,176206,210749,219170,247818,314764,321459,335945,339637,700689,712607,712946,735907,735907,735907,735907,735907,735907,735908,735908,735908,735908,735908,735908,735910,735911,735912,735913,746929,746929,747540,755003,767168,775558,776656,794173,794175,807493), relation = c(111098,210749,176206,NA,NA,NA,NA,NA,NA,807493,NA,NA,735908,735910,735911,735912,735913,767168,735907,735910,735911,735912,735913,767168,NA,NA,NA,NA,NA,100723,NA,NA,NA,776656,775558,NA,NA,700689))
Run Code Online (Sandbox Code Playgroud)

这应该会生成一个还显示孤立节点的图:

v<-unique(data[,1])
e <- na.omit(data)

g<-graph.data.frame(e, vertices = v, directed = T)
plot(g)
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我收到错误:“边列表中的某些顶点名称未在顶点数据框中列出”。

我希望有人能告诉我我做错了什么以及如何解决这个问题。谢谢

编辑:paqmo 回答我的问题,谢谢!

然而我的任务需要不同的方法。有关系但在第一行中缺失的 ID 是位于不同位置的人。这些应该被省略,同时保留第一排的每个孤立的人。我的解决方案目前使用 data.table :

v <- unique(c(data[,1]))
v <- as.data.frame(v)
e <- data
setDT(v);setDT(e)
setkey(v)
setkey(e, relation)
e <- e[v]
e <- na.omit(e)
g<-graph.data.frame(e, vertices = v, directed = T)
plot(g)
Run Code Online (Sandbox Code Playgroud)

欢迎任何关于更好/更有效的解决方案的建议。

r igraph

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

LFR 基准与随机块模型

有人可以帮助我理解 LFR 基准和随机块模型之间的区别吗?我正在尝试比较人工数据集和真实数据集上的社区检测算法,在人工部分我不知道哪个基准生成器更合理?

r graph-theory social-networking igraph

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

使用 igraph 进行两列二分布局

我正在尝试绘制一个二分图,但有两列;功能手册指出layout_as_bipartite()“在二分图的简单两行(或列)布局中最小化边交叉。” 尝试使用示例,我只能得到两个行图:

library(igraph)
library(dplyr)
# Random bipartite graph
inc <- matrix(sample(0:1, 50, replace = TRUE, prob=c(2,1)), 10, 5)
g <- graph_from_incidence_matrix(inc)
plot(g, layout = layout_as_bipartite,
     vertex.color=c("green","cyan")[V(g)$type+1])

# Two columns
g %>%
  add_layout_(as_bipartite()) %>%
  plot()
Run Code Online (Sandbox Code Playgroud)

r igraph

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

igraph:在每条边的中间添加新节点

我有一个图表,每个节点和边都有自己的属性(例如,节点具有不同的高程,边具有不同的直径和长度)。

现在,我想在每条边的中间添加新节点,并将两个连接到管道的节点的平均高程分配给新节点。 添加新节点 如果网络具有大量节点和边缘,我更喜欢在循环中执行这些操作。

这是从 R 导出的简单图表。使用以下命令将其加载到 R:

library(igraph)
g = readRDS("g.rds")
plot (g)
Run Code Online (Sandbox Code Playgroud)

情节(克)

这些节点具有不同的高程,边缘具有不同的长度和直径,但似乎我无法使用“g.rds”导出它们,因此运行下面的代码来添加这些属性:

E(g)$Length = c(1000, 1000, 1000, 1000)
E(g)$Diameter = c(500, 500, 500, 500)
V(g)$Elevation = c(10, 50, 30, 30)

>dput(g):
structure(list(4, FALSE, c(3, 2, 2, 1), c(0, 0, 1, 0), c(3, 1, 
2, 0), c(3, 1, 0, 2), c(0, 0, 1, 3, 4), c(0, 3, 4, 4, 4), list(
    c(1, 0, 1), structure(list(), names = character(0)), list(
        name = c("J-1", "J-2", "J-3", "R-1"), XCoord = …
Run Code Online (Sandbox Code Playgroud)

r igraph

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

用tkplot改变边缘厚度(Igraph,R)

我想知道在使用时是否有办法改变边缘厚度 tkplot()

我知道你可以通过右键单击边缘并手动更改它来完成它,但我希望能够调用一个属性用于边缘.类似于在我可以做的igraph中使用正常绘图功能edge.width=E(g)$Weight

另外,有没有办法将tkplot保存为png而不使用其他包?谢谢!

r igraph tkplot

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

使用python-igraph和mysql结果创建有向加权图

我正在使用python-igraph并尝试从MySQL查询结果生成有向加权图.我在我的数据集中的表上运行查询,我想基于此创建图表.基本上我的查询将返回以下内容:

A B Weight
1 2 3
2 4 5
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释如何使用python-igraph完成它?有可能吗?

python mysql igraph

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

将neo4j查询结果加载到python的`igraph`图中

如何将Cypher查询的结果加载到igraphpython中,保留所有边缘和顶点属性?

python igraph neo4j cypher

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

我怎样才能将matplotlib与igraph一起使用?

如何将统计图形(图,轴,图表等)添加到python-igraph中实现的现有图形中?我对matplotlib特别感兴趣,因为我对这个库有经验.

在我的情况下,igraph被用于不同的布局选项.我当前的网络部分约束了x维度,而布局更改了y.我想在图的底部添加一个条形图,列出绑定到网络节点的x坐标的值的频率.

(我没有使用scipy/ipython/pandas库,但还没有)

python matplotlib igraph

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

基于边权重的子集图

我有一个图表,G =(V,E)有几个属性,包括边缘权重属性.我正在尝试根据权重高于x的条件创建子图.

我已经尝试过标准的R子集选项g <- E(g)[weight > max(weight)*.10],但我总是得到一个向量.我不确定我在这里做错了什么.

r igraph

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