标签: igraph

igraph中社区检测算法之间有什么区别?

我有一个大约100个igraph对象的列表,其中一个典型的对象有大约700个顶点和3500个边.

我想确定哪些关系更有可能的顶点组.我的计划是使用混合模型来预测使用顶点和组属性有多少组内关系顶点.

有些人可能想要回应我的项目的其他方面,这将是伟大的,但我最感兴趣的是有关igraph中的函数的信息,用于分组顶点.我遇到过这些社区检测算法,但我不确定它们的优点和缺点,或者其他功能对我的情况是否更好.我也看到了这里的链接,但它们并不是特定于igraph的.谢谢你的建议.

r igraph

81
推荐指数
2
解决办法
4万
查看次数

R中的网络和弦图很难过

我有一些类似于data.frame d以下的数据.

d <- structure(list(ID = c("KP1009", "GP3040", "KP1757", "GP2243", 
                           "KP682", "KP1789", "KP1933", "KP1662", "KP1718", "GP3339", "GP4007", 
                           "GP3398", "GP6720", "KP808", "KP1154", "KP748", "GP4263", "GP1132", 
                           "GP5881", "GP6291", "KP1004", "KP1998", "GP4123", "GP5930", "KP1070", 
                           "KP905", "KP579", "KP1100", "KP587", "GP913", "GP4864", "KP1513", 
                           "GP5979", "KP730", "KP1412", "KP615", "KP1315", "KP993", "GP1521", 
                           "KP1034", "KP651", "GP2876", "GP4715", "GP5056", "GP555", "GP408", 
                           "GP4217", "GP641"),
                    Type = c("B", "A", "B", "A", "B", "B", "B", 
                             "B", "B", "A", "A", "A", "A", "B", "B", "B", "A", "A", "A", "A", 
                             "B", "B", …
Run Code Online (Sandbox Code Playgroud)

r data-visualization igraph graph-visualization circos

47
推荐指数
2
解决办法
7750
查看次数

如何在ggplot2中只绘制传说?

我目前正在使用igraph,并将颜色标记为我的顶点.我想添加一个图例指示每种颜色代表什么.

我现在能想到的是使用ggplot2只打印图例并隐藏条形图.有没有办法输出传奇?

r igraph ggplot2

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

我应该使用哪种布局来获得igraph中不重叠的边缘?

我正在尝试使用树状数据构建图形,其中节点通常分成> 2个边缘.我尝试了各种布局,我看到layout.reingold.tilford参数将生成具有非分叉数据的树状图.然而,产出并不是特别有吸引力.我宁愿使用类似layout.lgl或layout.kamada.kawai的东西,因为它们会产生更多的径向结构.我无法看到如何更改R中的参数,使这些树没有重叠的边缘.这可能吗?

我以Pajek格式导入了一个简单的数据文件,包含355个节点和354个边缘.我目前正在使用以下方式打印它:

plot.igraph(g,vertex.size=3,vertex.label=NA,layout=layout.lgl)
Run Code Online (Sandbox Code Playgroud)

这给了我这样的输出,这很好,但仍然有重叠的边缘.我已经读过你可以使用tkplot或者像cytoscape这样的其他程序手动修复它,但是我有很多这样的构建,并且它们的大小使得手动修正变得麻烦.

非常感谢. 这是我得到的输出的一个例子

plot r igraph

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

如何用固定位置控制igraph图布局?

我正在尝试绘制网络可视化以类似于流程图.我对以下代码非常接近,但我有几个问题:

  1. 这是最好的layout()算法,还是我可以为每个节点手动分配位置>
  2. 如何确保这些节点在图中不重叠(就像在这里一样)?
  3. 我可以将一个节点指定为"锚点"或起点吗?即,我可以将"C"作为最顶层或最左侧的节点吗?

非常感谢!!

library("igraph")
L3 <- LETTERS[1:8]
d <- data.frame(start = sample(L3, 16, replace = T), end = sample(L3, 16, replace = T),
                weight = c(20,40,20,30,50,60,20,30,20,40,20,30,50,60,20,30))


g <- graph.data.frame(d, directed = T)

V(g)$name 
E(g)$weight

ideg <- degree(g, mode = "in", loops = F)

col=rainbow(12) # For edge colors

plot.igraph(g, 
  vertex.label = V(g)$name, vertex.label.color = "gray20",
  vertex.size = ideg*25 + 40, vertex.size2 = 30,
  vertex.color = "gray90", vertex.frame.color = "gray20",
  vertex.shape = "rectangle",
  edge.arrow.size=0.5, edge.color=col, edge.width = E(g)$weight / …
Run Code Online (Sandbox Code Playgroud)

r igraph

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

如何使用igraph和R找到顶点的边缘?

假设我有这个示例图,我想找到连接到顶点'a'的边

 d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
                 p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'))

library(igraph)
g <- graph.data.frame(d, directed=FALSE)
print(g, e=TRUE, v=TRUE)
Run Code Online (Sandbox Code Playgroud)

我可以很容易地找到一个顶点:

 V(g)[V(g)$name == 'a' ]
Run Code Online (Sandbox Code Playgroud)

但我需要引用连接到顶点'a'的所有边.

r igraph

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

如何将igraph分割成连接的子图?

我有一个有几个断开组件的igraph.例如:

library(igraph)
g <- simplify(
  graph.compose(
    graph.ring(10), 
    graph.star(5, mode = "undirected")
  )
) + edge("7", "8")
Run Code Online (Sandbox Code Playgroud)

带有多个断开组件的igraph图

在该示例中,节点9是其自己的图,节点7和8也是如此,其余的形成第三图.

我想分开处理这些,所以我想将单个igraph转换为3个igraph的列表(按连通性分割).

我破解了一些代码来实现这一目标,但它效率低下且非常糟糕.

split_graph_into_connected_subgraphs <- function(g)
{
  adjacency_list <- get.adjlist(g)

  connected_nodes <- lapply(
    adjacency_list,
    function(adjacent_nodes)
    {
      new_nodes <- out <- adjacent_nodes
      # Keep finding nodes that are adjacent to ones we already know about,
      # until we find no more
      repeat
      {
        doubly_adjacent_nodes <- Reduce(union, adjacency_list[new_nodes])
        new_nodes <- setdiff(doubly_adjacent_nodes, out)
        if(length(new_nodes) == 0)
        {
          break
        }
        out <- union(out, new_nodes)      
      }
      sort(out)
    }
  ) …
Run Code Online (Sandbox Code Playgroud)

r igraph

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

igraph库出错 - 不推荐使用库

我已经将我的计算机改为Linux Mint x64操作系统,当我尝试执行和我制作的旧程序时,我遇到了一个python库,igraph库.

弃用警告:为避免与igraph项目发生名称冲突,此可视化库已重命名为"jgraph".请在方便时升级.

我找不到有关如何更改新库代码的信息.在Win8 PC上,通过pip安装,它可以很好地工作,但我无法使用Mint在我的PC上工作.正常安装用

sudo apt-get install python-igraph

安装0.6.5-1库版本.我也尝试用pip安装它,但它给了我同样的错误,但安装的版本是igraph-0.1.11-py2.py3-none-any.whl

我只使用Graph类

from igraph import Graph
Run Code Online (Sandbox Code Playgroud)

我有什么办法来更改我的代码以使其与新库一起使用?我错过了什么吗?

编辑:它正在我的笔记本电脑上使用Mint x86 OS,库版本0.6.5-1

python linux igraph python-2.7

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

如何延长igraph网络图中的边缘(layout = fruchterman.reingold)?

尝试在R中进行网络绘图.如何使用IGraph延长网络图中的边缘?

我其实想要使用fruchterman-reingold布局.有没有什么方法可以使基于力的算法"更加弹性",以便我的顶点更远?

谢谢.

networking plot r igraph

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

在NetworkX中通过边缘和节点属性查询图表的最佳实践

使用NetworkX和新的库,进行社交网络分析查询.通过查询,我的意思是按边缘节点的属性选择/创建子图,其中边创建路径,节点包含属性.该图表使用的是表格的MultiDiGraph

G2 = nx.MultiDiGraph()
G2.add_node( "UserA", { "type" :"Cat" } )
G2.add_node( "UserB", { "type" :"Dog" } )
G2.add_node( "UserC", { "type" :"Mouse" } )
G2.add_node( "Likes", { "type" :"Feeling" } )
G2.add_node( "Hates", { "type" :"Feeling" } )

G2.add_edge( "UserA", 'Hates' ,  statementid="1" )
G2.add_edge( "Hates", 'UserB' ,  statementid="1"  )
G2.add_edge( "UserC", 'Hates' ,  statementid="2" )
G2.add_edge( "Hates", 'UserA' ,  statementid="2"  )
G2.add_edge( "UserB", 'Hates' ,  statementid="3"  )
G2.add_edge( "Hates", 'UserA' ,  statementid="3"  )
G2.add_edge( "UserC", 'Likes' ,  statementid="3" …
Run Code Online (Sandbox Code Playgroud)

python igraph networkx

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