标签: igraph

从numpy或pandas邻接矩阵的igraph图

我有一个邻接矩阵存储为pandas.DataFrame:

node_names = ['A', 'B', 'C']
a = pd.DataFrame([[1,2,3],[3,1,1],[4,0,2]],
    index=node_names, columns=node_names)
a_numpy = a.as_matrix()
Run Code Online (Sandbox Code Playgroud)

我想igraph.Graph从邻接矩阵pandasnumpy邻接矩阵创建一个.在理想的世界中,节点将按预期命名.

这可能吗?该教程似乎对此问题保持沉默.

python numpy igraph pandas

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

从R中的一列中选择共享另一列中的值的最大数量

我有一个大型数据集,其中包含 40 年来不定期采样的站点。我想选择共享的最大站点数,让\xe2\x80\x99s 说,至少 5 年的数据。

\n

任何指示将不胜感激。

\n

Here\xe2\x80\x99s 是一个示例数据集:

\n
library(tidyverse)\n\nset.seed(123)\n\nDF <- tibble(\n  Sites = 1:100,\n  NYears = rbinom(100, 40, .2)\n  ) %>%\n  rowwise() %>%\n  mutate(Years = list(sample(1982:2021, NYears))) %>%\n  unnest(Years) %>%\n  select(-NYears)\n
Run Code Online (Sandbox Code Playgroud)\n

algorithm performance r igraph dataframe

19
推荐指数
5
解决办法
589
查看次数

python + igraph"plotting not available"

我在RHEL机器上从源安装了python-igraph 0.5.4和igraph 0.5.4(也测试了0.6).一切都很好,除非我试图策划我得到.

"TypeError:绘图不可用"

配置或安装阶段没有错误或警告.

我需要在linux上安装什么才能使绘图工作?我没有root,所以需要从源代码安装它.

python igraph

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

igraph创建加权邻接矩阵

我正在尝试使用该igraph包来绘制(稀疏)加权图.我目前有一个邻接矩阵,但无法获得graph.adjacency识别边权重的功能.

考虑以下随机对称矩阵:

m <- read.table(row.names=1, header=TRUE, text=
"           A          B          C          D           E         F
A 0.00000000  0.0000000  0.0000000  0.0000000  0.05119703 1.3431599
B 0.00000000  0.0000000 -0.6088082  0.4016954  0.00000000 0.6132168
C 0.00000000 -0.6088082  0.0000000  0.0000000 -0.63295415 0.0000000
D 0.00000000  0.4016954  0.0000000  0.0000000 -0.29831267 0.0000000
E 0.05119703  0.0000000 -0.6329541 -0.2983127  0.00000000 0.1562458
F 1.34315990  0.6132168  0.0000000  0.0000000  0.15624584 0.0000000")
m <- as.matrix(m)
Run Code Online (Sandbox Code Playgroud)

为了绘图,首先我必须将这个邻接矩阵变为正确的igraph格式.这应该是相对简单的graph.adjacency.根据我阅读的文档graph.adjacency,我应该做以下事情:

library(igraph)
ig <- graph.adjacency(m, mode="undirected", weighted=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,它无法识别边缘权重:

str(ig)
# IGRAPH …
Run Code Online (Sandbox Code Playgroud)

r igraph

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

iGraph图中的顶点名称在哪里

我的一般问题是,当使用iGraph生成图形时,我松开了顶点名称/标签(这里不确定正确的单词).

我有一个二分网络的边缘列表IC_edge_sub,如下所示:

  new_individualID new_companyID
1             <NA>     10024354c
3        10069415i      2020225c
4        10069415i     16020347c
5        10069272i      2020225c
6        10069272i     16020347c
7        10069274i      2020225c
Run Code Online (Sandbox Code Playgroud)

然后我创建一个图元素:

IC_projected_graphs <- bipartite.projection(IC_twomode, types = 
                         is.bipartite(IC_twomode)$type)
Run Code Online (Sandbox Code Playgroud)

然后折叠它以仅识别companyID之间的连接

IC_projected_graphs <- bipartite.projection(IC_twomode, types =   
                         is.bipartite(IC_twomode)$type)
Run Code Online (Sandbox Code Playgroud)

然后得到邻接矩阵:

CC_matrix_IC_based <- get.adjacency(CC_graph_IC_based); CC_matrix_IC_based
Run Code Online (Sandbox Code Playgroud)

在iGraph中,节点编号从零开始,因此矩阵命名也从零开始.但是,我现在需要在最终的CC_matrix_IC_based矩阵中的edgelist的第二列中指定的"new_companyID".

你能帮助我如何使用原始边缘列表中的信息在最终的邻接矩阵中放入rownames和colnames吗?

我用Google搜索并搜索了堆栈流,但无法找到合适的答案.非常感谢你的帮助

r igraph bipartite

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

R包链接到外部C库

我有一些利用igraph库的c代码.我想在它周围放一个R包装并将其作为R包发送给CRAN.

igraph在CRAN上已经有一个R端口,所以我的R包'foo'依赖于R的igraph是有意义的.由于foo使用自己的C代码依赖于C igraph,我如何将我的C函数链接到原始的igraph库?我已经读过这是在一个名为Makevars的文件中完成的,但链接到外部库非常多毛.

如果这是不可能的,那么复制整个igraph源代码并将整个内容放入我的/ src目录是否更好?R igraph包已经有一个名为Makevars的文件,但我不明白所有的c文件是如何构建的 - 通常在我的Makefile中我有类似gcc(一些.c源文件列表)-o,但Makevar只包含

PKG_CFLAGS=-DUSING_R -I. -Ics -Iglpk -Iglpk/amd -Iglpk/colamd \
-g -O2 -I/usr/include/libxml2 -g -O2 -I/usr/include/libxml2 -DNDEBUG \
-DPACKAGE_VERSION=\"0.6\" -DINTERNAL_ARPACK \
-DIGRAPH_THREAD_LOCAL=/**/
PKG_CXXFLAGS= -DUSING_R -DIGRAPH_THREAD_LOCAL=/**/ -DNDEBUG
PKG_LIBS=-lxml2 -lz -lpthread -licucore -lm -lgmp  $(FLIBS) $(LAPACK_LIBS) $(BLAS_LIBS)

all: $(SHLIB)
Run Code Online (Sandbox Code Playgroud)

并且没有其他Makefile.总之,如何将C代码放入依赖于另一个C库的R包中,如何编写相应的Makevars(或Makefile)来合并C函数?

这里发布一个较旧的问题,但似乎只是链接到帮助编写自己的C代码,而不依赖于任何东西.

c linker r graph igraph

16
推荐指数
2
解决办法
2255
查看次数

由标签的子集igraph图

我试图通过边缘特征(如其标签)对igraph图进行子集化.在可重复的例子中,我通过一点修改从另一个帖子中无耻地偷走了,我希望能够将最好的朋友关系(BF)与家庭关系(FAM)分开:

edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T)
g <- graph(as.vector(t(edges)))
E(g)[c(2:4,7)]$label<-"FAM"
E(g)[c(1,5,6)]$label<-"BF"
Run Code Online (Sandbox Code Playgroud)

到目前为止我能做的最好的事情是显示有一种领带的边缘:

E(g)[E(g)$label=="BF"]
V(g)[E(g)$label=="BF"]
Run Code Online (Sandbox Code Playgroud)

r igraph

16
推荐指数
2
解决办法
7934
查看次数

如何从图中返回顶点ID

请考虑以下事项

library(igraph)
id <- c("1","2","A","B")
name <- c("02 653245","03 4542342","Peter","Mary")
category <- c("digit","digit","char","char")
from <- c("1","1","2","A","A","B")
to <- c("2","A","A","B","1","2")

nodes <- cbind(id,name,category)
edges <- cbind(from,to)

g <- graph.data.frame(edges, directed=TRUE, vertices=nodes)
Run Code Online (Sandbox Code Playgroud)

现在我想使用我用于从数据框创建图形的ID来访问图形的特定顶点id <- c("1","2","A","B").

假设我想访问第三个顶点 - 最初用"A"标识.有没有办法用类似的东西访问顶点

V(g)$id == "A"
Run Code Online (Sandbox Code Playgroud)

无论如何要获得idname?也就是说,如果我跑

which(V(g)$name == "Peter")
Run Code Online (Sandbox Code Playgroud)

我得到3.如何A取而代之?

r igraph

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

如何在导入igraph时解决AttributeError?

当我在项目中导入igraph包时,我得到一个AttributeError.这只发生在项目目录中:

[12:34][~]$ python2
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import igraph
>>> 

[12:34][~]$ cd projectdir/
[12:34][projectdir]$ python2
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import igraph
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/igraph/__init__.py", line 42, in <module>
    import gzip
  File "/usr/lib/python2.7/gzip.py", …
Run Code Online (Sandbox Code Playgroud)

python import packages igraph

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

如何在igraph中制作分组布局?

igraph应用模块化算法查找图形社区之后,我想绘制一个网络布局,清楚地显示不同的社区及其连接.类似于Cytoscape中的"组属性布局":我希望显示每个组/社区的成员彼此接近,并在组/社区之间保持一定距离.我无法找到igraph提供此功能的任何功能.在发布这个问题时,我已经找到了一个简单的diy解决方案,我将把它作为答案发布.但我想知道是否有更好的可能性,或更详细的解决方案?

r igraph

14
推荐指数
2
解决办法
9238
查看次数

标签 统计

igraph ×10

r ×7

python ×3

algorithm ×1

bipartite ×1

c ×1

dataframe ×1

graph ×1

import ×1

linker ×1

numpy ×1

packages ×1

pandas ×1

performance ×1