标签: igraph

从文件中读取边.我无法定义图表

我是R.的新人.我正在使用igraph库.我是新用的这样的库.

我有个问题:

我有一个文本文件中的边列表.它有两列.第一个具有初始节点,第二个具有结束节点.

我正在阅读文件:

g1 <-read.table ("g1.txt")
Run Code Online (Sandbox Code Playgroud)

阅读是成功的.

ls.str(g1)我得到:

V1 :  int [1:995] 0 0 0 0 0 0 0 0 0 0 ...
V2 :  int [1:995] 2 3 4 5 6 7 8 9 10 11 ...
Run Code Online (Sandbox Code Playgroud)

当我尝试使用刚刚加载的边缘定义图形时,我得到:

Error in graph(g1) : (list) object cannot be coerced to type 'double'
Run Code Online (Sandbox Code Playgroud)

如何从文件的边缘定义图形,避免上述错误?

r igraph

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

如何使用igraph绘制互连链接?

我有这些载体:

>dput(SHLRK03)
c("CHSLSCR01", "SHLRK04", "SHLRK05", "WLLWCR01", "WLLWCR02", 
"WNBGORV01", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
"WNBGORV06")
> dput(SHLRK04)
 "SHLRK05"
> dput(WNBGORV01)
 c("WLLWCR02", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
 "WNBGORV06")
Run Code Online (Sandbox Code Playgroud)

我希望通过以下方式获得单个连接图:

  1. 从SHLRK03指向向量中的值.
  2. 从SHLRK03内的SHLRK04到SHLRK04中的值
  3. 从带有SHLRk04的WNBGORV01到WNBGORV01中的值

我还有几个相互连接的值.我试图在堆栈溢出和网络上搜索这种类型的图,但无法找到任何示例.

有人可以帮帮我吗?我感谢您的时间和精力.

plot r igraph

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

我们可以在R-igraph中改变文本大小和节点大小吗?

我们可以在R-igraph中改变文本大小和节点大小吗?如果是,我们可以使用什么属性?任何例子?

(通过文字我的意思是节点名称)

网络使用iGraph

例如,我使用igraph函数在网络上绘制如下:

plot.igraph(net,vertex.label=V(net)$name,layout=layout.fruchterman.reingold,
            edge.color="black",edge.width=Eweight,edge.curved=F)
Run Code Online (Sandbox Code Playgroud)

如果我们查看与每个节点对应的标签,则每个节点具有相同的大小.我想根据相应的节点大小改变这个标签大小.例如尺寸("w1")>尺寸("w5")>尺寸("w6")等.

resize r nodename igraph

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

页面排名algo在R中的实现

我正在尝试使用以下步骤在R中实现页面排名算法:

  1. 加载如下的示例图:

    0 1
    0 2
    0 3
    1 2
    1 5
    2 0
    2 4
    3 1
    3 0
    3 4
    4 1
    4 5
    5 2
    5 3
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从该图中创建一个邻接矩阵

  3. 创建马尔可夫链(转换矩阵)
  4. 找到静止分布并将其标准化

以下是实现所有这些步骤的代码:

g = read.graph(x)

a = get.adjacency(g)

markov = a / rowSums(a)

e = eigen(t(markov))

v <- e$vec[,1]

normalized <- v / sum(v)
Run Code Online (Sandbox Code Playgroud)

当我将标准化对象的向量与page.rank(g)为这个特定图形生成的向量进行比较时,它们几乎相同,只有细微差别.但是,当我在此图表上尝试时:

    0 1
    0 2
    0 3
    1 2
    1 5
    2 0
    2 4
    3 1
    3 0
    3 4
    4 1
    4 …
Run Code Online (Sandbox Code Playgroud)

r pagerank igraph

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

在圆环上绘制igraph对象

我有一个缠绕在圆环上的晶格(图末尾的每个节点都链接到它们在网格上的相对节点)。

require("igraph")
require("rgl")

n = 10
g = graph.lattice(c(n,n)) # create a square lattice (nxn)

plot(g,vertex.size = 0.5,vertex.size = 4,vertex.label = NA,vertex.color = "red")

# want to connect up the corners (horribly done)
v1 = seq(from =1, to = n,by = 1)
v2 = seq(from = n, to = n^2, by = n)
v3 = seq(from = n^2, to = n^2 - n+1, by = -1)
v4 = seq(from = v3[length(v3)],to = 1,by = -n)

a = cbind(rbind(v1,v2), rbind(v3,v4))
a2 …
Run Code Online (Sandbox Code Playgroud)

layout r igraph rgl mathematical-lattices

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

如何在igraph python中删除具有特定权重的所有边缘?

我是新来的Python很抱歉,如果这是如此简单,我想删除所有edges这些的weight就是zero,但与此代码我只是能够一次删除一个边缘,如何使它在客场,这将删除所有边缘?

 ig.summary(graph_like)
IGRAPH D-W- 5390 40276 -- 
graph_like.delete_edges("weight"==0);
ig.summary(graph_like)
IGRAPH D-W- 5390 40275 -- 
Run Code Online (Sandbox Code Playgroud)

先感谢您

python igraph

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

igraph包中的子图错误

我想获得图中所有周期的子图。我尝试了下面的代码

 for (i in 1:length(cycles)){
    vids<-as.numeric(unlist(cycles[[i]]))
    subgraph<- induced.subgraph(graph, vids)
 }
Run Code Online (Sandbox Code Playgroud)

但是它会抛出如下错误:

Error in .Call("R_igraph_induced_subgraph", graph, vids - 1, impl, PACKAGE = "igraph") : 
  At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id
Run Code Online (Sandbox Code Playgroud)

我发现该代码可与cycles列表中的第二个元素一起使用,该元素较短,但第一个元素不是。因此,如果我尝试这样做会起作用,

subgraph<- induced.subgraph(g, c(3,4))
Run Code Online (Sandbox Code Playgroud)

但不是

subgraph<- induced.subgraph(g, c(26, 2, 30, 29, 25, 9, 27, 13, 14, 8, 23, 20, 19, 17, 12, 11, 24, 21, 6, 28, 15,3,4))
Run Code Online (Sandbox Code Playgroud)

同样,欢迎提出任何替代for循环的建议。

一个可重现的示例:

    library(igraph)
    graph<-graph(c(1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,
           16,17,17,18,18,19,19,20,20,21,21,1,22,23,23,22),directed=T)
    V(graph)$name<-c(26, 2, 30, 29, 25, 9, 27, 13, 14, 8, …
Run Code Online (Sandbox Code Playgroud)

r subgraph igraph

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

lapply函数在igraph中查找邻居(当找不到所有节点时)

我正在尝试为节点列表创建网络邻居的数据集.我虽然可以使用lapply函数来执行此操作,其中我使用neighbors命令.作为一个额外的复杂功能,我的一些查找节点不在图中,但无论如何我无法使其工作.

这是一个例子:

edgelist <- read.table(text = "
A B
B C
C D
D E
C F
F G")  

testlist <- read.table(text = "
A
H
C
D
J")  

testlist2 <- read.table(text = "
A
C
B
D
E") 

library(igraph)
graph <- graph.data.frame(edgelist)
str(graph)

neighbors<- lapply(testlist2, function(p) {  #Each pledge_id
  temp=neighbors(graph,p)  #Find all the neighbors for that pledge 
  return(temp)
})

neighbors<- lapply(testlist, function(p) {  #Each pledge_id
  temp=neighbors(graph,p)  #Find all the neighbors for that pledge 
  return(temp)
})
Run Code Online (Sandbox Code Playgroud)

不幸的是,这两种情况下都会返回hogwash.我错过了什么?

我想要的输出将是这样的:

lookupnode neighbor …
Run Code Online (Sandbox Code Playgroud)

r igraph

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

增加R iGraph顶点之间的间距

我正在研究使用R和igraph在亚马逊上一起购买的政治书籍的可视化.我已经能够以一种形式获得网络图,这种形式揭示了某些书籍落入某个位置的方式,表明他们不仅仅是购买其他具有相同政治观点的书籍的人购买的.这是图表:

我的问题是,如果所有这些书都在更紧密的集群中,那么阅读标签是非常不可能的.如果我能够在不掩盖连接集群的少数标题的中间位置的情况下,我想扩展这些集群.

有没有人对我如何做到这一点有任何想法?

为了生成此图,我将此数据作为gml文件读入,然后执行以下操作:

g<-read.graph("data/polbooks/polbooks.gml", format=c("gml"))
V(g)$degree <- degree(g, mode="all")
cut.off <- mean(V(g)$degree)
sub <- induced_subgraph(g, which(V(g)$degree>cut.off))
plot(sub, vertex.shape="none", vertex.size=1,     
     vertex.label.color=ifelse(V(sub)$value=="l", "blue", "red"),   
     layout=layout_with_fr)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种内置布局,但它们都没有真正产生预期的结果.

visualization r igraph

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

使用R的网络图:基于连接边数的节点大小

我想根据连接边的数量看到节点/顶点的大小.例如,如果节点1与其他节点具有更多数量的连接边,则节点1的大小应更大.我已经采用了一个假设的简单数据和尝试网络图,它运作得相当好.基本上,网络图是关于共同作者网络.但是,我想根据连接边的数量调整节点的大小.另外,我想知道如何自定义边缘颜色?例如,如果节点1具有多于4个连接,则所有4个边缘的颜色应为红色.

以下是表现良好的代码:

library(igraph)

# original data as a list
input_data  = list(c(1,2,3),c(1,4,5),c(1,6),c(3),c(4,6))

## function that makes all pairs
pairing <- function(x) {
  n = length(x)
  if (n<2) {
    res <- NULL
  } else {
  q <- combn(n,2)
  x2 <- x[q]
  #dim(x2) <- dim(q)
  res <- x2
  }
  return(res)
}

## for each paper create all author pairs
pairing_bypaper = lapply(input_data,pairing)

## remove papers that contribute no edges
pair_noedge = sapply(pairing_bypaper,is.null)
pair2_bypaper <- pairing_bypaper[!pair_noedge]

## combine all 'subgraphs'
pair_all <- do.call('c',pair2_bypaper) …
Run Code Online (Sandbox Code Playgroud)

r igraph

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