标签: igraph

R igraph将平行边缘转换为权重属性

我正在使用igraph for R.我的图表基于一个包含平行边缘的边缘列表(多个边缘具有相同的源和目标).我想将这些平行边缘转换为边缘属性权重.有没有一种方法可以做到这一点?

如果没有简单的方法.如何识别这些平行边缘?

    duplicated(E(net))
Run Code Online (Sandbox Code Playgroud)

不会返回单个副本.我想它正在寻找重复的边缘ID.

r edges igraph weighted-graph

12
推荐指数
2
解决办法
5385
查看次数

在R igraph中正确地着色顶点

我正在使用igraph来着色顶点

我有两个CSV文件答案和图表拓扑.

答案:(这告诉玩家K和N正确回答)

  Player Q1_I1
1      k     1
2      l     0
3      n     1
4      m     0
Run Code Online (Sandbox Code Playgroud)

拓扑:(代表谁与谁联系)

  Node.1 Node.2
1      k      l
2      l      k
3      l      m
4      m      l
5      l      n
6      n      l
7      n      k
8      k      n
Run Code Online (Sandbox Code Playgroud)

我想使用包IGraph构建一个图形,并根据它们的正确性为不同颜色的顶点着色.

这就是我能够实现的目标:

# reads answers and creates a graph from topology
answers <- read.csv("answers2.csv",header=T)
data<-read.csv('edges2.csv')
data<-graph.data.frame(data1, directed=FALSE)
g<-simplify(data)

# goes through vertices and colors them in different color, depending on correctness. 
# 2 means second column …
Run Code Online (Sandbox Code Playgroud)

r igraph

12
推荐指数
2
解决办法
3万
查看次数

networkx和igraph之间的接口

我一直在使用networkx已经有一段时间了,直到最近我开始研究社区检测时,它一直很好地服务于我的目的.相比之下,igraph Python包似乎有更广泛的社区检测方法实现(甚至与添加了Thomas Aynaud社区包的networkx相比).我只是想知道是否有任何现有的,经过测试的API可以轻松地将networkx图转换为igraph结构,所以我可以利用这个领域提供的功率igraph?

非常感谢您的回答.

python igraph networkx

12
推荐指数
3
解决办法
6557
查看次数

在python中使用iGraph进行社区检测,并将每个节点的社区编号写入CSV

我有一个网络,我想使用edge_betweennessiGraph中的社区检测算法进行分析.我对NetworkX很熟悉,但我正在尝试学习iGraph,因为它是基于NetworkX的其他社区检测方法.

我的最终目标是运行edge_betweenness社区检测并找到最佳社区数,并为图中的每个节点编写具有社区成员资格的CSV.

以下是我目前的代码.任何帮助计算社区成员资格的人都非常感谢.

输入数据('network.txt'):

1 2
2 3
2 7
3 1
4 2
4 6
5 4
5 6
7 4
7 8
8 9
9 7
10 7
10 8
10 9
Run Code Online (Sandbox Code Playgroud)

iGraph代码

import igraph

# load data into a graph
g = igraph.Graph.Read_Ncol('network.txt')

# plot graph
igraph.plot(g)
Run Code Online (Sandbox Code Playgroud)

igraph.plot(克)

# identify communities
communities = igraph.community_edge_betweenness()

# not really sure what to do next
num_communities = communities.optimal_count
communities.as_clustering(num_communities)
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能找到最佳社区数量并写下图表中每个节点属于列表的社区?

python hierarchical-clustering igraph

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

彩色图同构:1(红色) - > 2(蓝色)vs 1(蓝色) - > 2(红色)

给出两个简单的图:

library(igraph)

g <- graph.empty()
g <- g + vertices(1,2,3)
g <- g + path(1,2,3)


g1 <- g
V(g1)$color = c(1,2,2)
g2 <- g
V(g2)$color = c(2,1,1)
Run Code Online (Sandbox Code Playgroud)

看起来像:

par(mfrow=c(1,2))
palette(rainbow(3))
plot(g1)
plot(g2)
Run Code Online (Sandbox Code Playgroud)

图

他们为什么不同构?

graph.isomorphic.vf2(g1,g2)$iso
Run Code Online (Sandbox Code Playgroud)

最重要的是,如果这不是同构,我怎样才能在内部检测到这种等价igraph

r graph isomorphism igraph

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

将不同联系电话号码和电子邮件组合为同一联系人的算法方式

我有以下小题,

contact <- tribble(
  ~name, ~phone, ~email,
  'John', 123, 'john_abc@gmail.com',
  'John', 456, 'john_abc@gmail.com',
  'John', 456, 'john_xyz@gmail.com',
  'John', 789, 'john_pqr@gmail.com'
)
Run Code Online (Sandbox Code Playgroud)

如果电话或电子邮件相同,我想合并电话号码和电子邮件,所需的输出如下,

contact_combined <- tribble(
  ~name, ~phone, ~email,
  'John', '123;456', 'john_abc@gmail.com;john_xyz@gmail.com',
  'John', '789', 'john_pqr@gmail.com'
)
Run Code Online (Sandbox Code Playgroud)

我尝试先按姓名和电话进行分组,然后按姓名和电子邮件进行分组,但它没有给我预期的结果。我一直在寻找一种算法方法来解决这个问题,有人能给我建议吗?

注意:列中值的折叠不是这里的问题。这是关于选择要折叠的记录。

algorithm r igraph

12
推荐指数
3
解决办法
583
查看次数

有效枚举具有给定约束的所有可能矩阵

背景

假设我们有一个M大小为n-by-的矩阵族n,它应该满足以下要求:

  1. 矩阵的条目是01,即布尔值,但对角线条目始终是0s
  2. 矩阵是对称的,即M == t(M)
  3. 存在一个恒定的行(或等效的列)总和约束p,使得all(rowSums(M)==p) == TRUE

问题

  • 特定的矩阵结构是否有任何潜在的特征,例如对称性、布尔值或其他特征,以便我们可以从中受益以提高搜索效率?
  • 看来这个问题可以用图论的方式来解释。例如,该矩阵是n由入度和出度都等于 的顶点组成的图的邻接矩阵p。这可以通过 来完成sample_degseq,但我们可能必须找到它的所有同构映射。如果我们使用方法,我们该如何做到这一点igraph

到目前为止,我的代码如下所示,但是当我们有更大的nor时,它会很慢p(而且我不确定在枚举过程中是否遗漏了一些矩阵)。

f <- function(n, p) {
    # helper function to check if requirement holds
    checker <- function(M, p, i = nrow(M) - 1) {
        rs <- rowSums(M)
        if ((i == nrow(M) - 1)) …
Run Code Online (Sandbox Code Playgroud)

algorithm performance r matrix igraph

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

使用igraph导入加权边缘列表

我有以下txt文件表示边缘列表格式的网络.

前两列代表通常的:哪个节点连接到哪个其他节点

第三列表示权重,表示每个节点与另一个节点联系的次数.

我搜索了igraph文档,但没有提到在导入标准文件格式(如txt)时如何包含权重参数.

可以从这里访问该文件,这是我一直在使用的代码:

read.graph("Irvine/OClinks_w.txt", format="edgelist")
Run Code Online (Sandbox Code Playgroud)

此代码将第三列视为除权重之外的其他内容.

有谁知道解决方案?

python r igraph edge-list

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

如何从边缘列表创建加权邻接列表/矩阵?

我的问题很简单:我需要从边列表中创建一个邻接列表/矩阵.

我有一个边缘列表存储在csv文档中,其中column1 = node1和column2 = node2,我想将其转换为加权邻接列表或加权邻接矩阵.

更确切地说,这是数据的样子 - 数字只是节点ID:

node1,node2
551,548
510,512
548,553
505,504
510,512
552,543
512,510
512,510
551,548
548,543
543,547
543,548
548,543
548,542
Run Code Online (Sandbox Code Playgroud)

有关如何实现从此转换为加权邻接列表/矩阵的任何提示?这就是我以前决定这样做的方法,但没有成功(由Dai Shizuka提供):

dat=read.csv(file.choose(),header=TRUE) # choose an edgelist in .csv file format
el=as.matrix(dat) # coerces the data into a two-column matrix format that igraph likes
el[,1]=as.character(el[,1])
el[,2]=as.character(el[,2])
g=graph.edgelist(el,directed=FALSE) # turns the edgelist into a 'graph object'
Run Code Online (Sandbox Code Playgroud)

谢谢!

r adjacency-list igraph adjacency-matrix sna

11
推荐指数
3
解决办法
3万
查看次数

igraph:解决紧密重叠的节点

我有一个包含几百个节点和边的图.断开连接的子图分离出来并很好地解决,但子图中的节点重叠并且不能很好地解析.我尝试了几种布局算法,并尝试更改布局算法中的相关参数(例如:iter,kkconst,start.temp等).但是,我仍然无法驱散紧密集群的节点.见下图.

我希望找到一些参数来控制吸引力/排斥/重力等,但似乎没有.答案和人物bdemarest在这个问题似乎解决正是这个问题.奇怪的是,在新版本的igraph(coolex,maxdelta,area,repulserad等)中已经弃用了几个看似有用的参数.

有没有人知道如何保持子图很好地分离,同时扩展出足够接近的节点,使它们不重叠?

图

r igraph

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