我正在使用igraph for R.我的图表基于一个包含平行边缘的边缘列表(多个边缘具有相同的源和目标).我想将这些平行边缘转换为边缘属性权重.有没有一种方法可以做到这一点?
如果没有简单的方法.如何识别这些平行边缘?
duplicated(E(net))
Run Code Online (Sandbox Code Playgroud)
不会返回单个副本.我想它正在寻找重复的边缘ID.
我正在使用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) 我一直在使用networkx已经有一段时间了,直到最近我开始研究社区检测时,它一直很好地服务于我的目的.相比之下,igraph Python包似乎有更广泛的社区检测方法实现(甚至与添加了Thomas Aynaud社区包的networkx相比).我只是想知道是否有任何现有的,经过测试的API可以轻松地将networkx图转换为igraph结构,所以我可以利用这个领域提供的功率igraph?
非常感谢您的回答.
我有一个网络,我想使用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)

# 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)
我需要做些什么才能找到最佳社区数量并写下图表中每个节点属于列表的社区?
给出两个简单的图:
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?
我有以下小题,
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)
我尝试先按姓名和电话进行分组,然后按姓名和电子邮件进行分组,但它没有给我预期的结果。我一直在寻找一种算法方法来解决这个问题,有人能给我建议吗?
注意:列中值的折叠不是这里的问题。这是关于选择要折叠的记录。
假设我们有一个M大小为n-by-的矩阵族n,它应该满足以下要求:
0或1,即布尔值,但对角线条目始终是0sM == t(M)p,使得all(rowSums(M)==p) == TRUEn由入度和出度都等于 的顶点组成的图的邻接矩阵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) 我有以下txt文件表示边缘列表格式的网络.
前两列代表通常的:哪个节点连接到哪个其他节点
第三列表示权重,表示每个节点与另一个节点联系的次数.
我搜索了igraph文档,但没有提到在导入标准文件格式(如txt)时如何包含权重参数.
可以从这里访问该文件,这是我一直在使用的代码:
read.graph("Irvine/OClinks_w.txt", format="edgelist")
Run Code Online (Sandbox Code Playgroud)
此代码将第三列视为除权重之外的其他内容.
有谁知道解决方案?
我的问题很简单:我需要从边列表中创建一个邻接列表/矩阵.
我有一个边缘列表存储在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)
谢谢!
我有一个包含几百个节点和边的图.断开连接的子图分离出来并很好地解决,但子图中的节点重叠并且不能很好地解析.我尝试了几种布局算法,并尝试更改布局算法中的相关参数(例如:iter,kkconst,start.temp等).但是,我仍然无法驱散紧密集群的节点.见下图.
我希望找到一些参数来控制吸引力/排斥/重力等,但似乎没有.答案和人物bdemarest在这个问题似乎解决正是这个问题.奇怪的是,在新版本的igraph(coolex,maxdelta,area,repulserad等)中已经弃用了几个看似有用的参数.
有没有人知道如何保持子图很好地分离,同时扩展出足够接近的节点,使它们不重叠?