使用pythonigraph编写带有节点标签的Pajek文件

2024-06-28 19:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用igraph构造图,并将它们写成Pajek(.net)文件,以便与其他程序一起使用。Pajek文件是用顶点的数字索引而不是顶点标签来编写的,所以当我把这些文件读入另一个程序时,标签就消失了。在

下面是一个简单的例子:

>>> g = ig.Graph(vertex_attrs={'label': ['spam', 'eggs', 'ham']}, edges=[(1,0), (1,2)])
>>> g.vs.get_attribute_values('label')
['spam', 'eggs', 'ham']
>>> g.write_pajek('file.net')

$ head file.net
*Vertices 3
*Edges
1 2
2 3

是否可以更改write_pajek()的行为来写出标签而不仅仅是索引?在


一位好心的同事指出,igraphC库doesn't have能够写出顶点标签。在

以下是解决方法:

^{pr2}$

更新

不需要解决方法!感谢Gabor指出write_pajek()使用的是id属性,而不是{}属性。在

>>> g.vs['id'] = g.vs['label'] 
>>> g.write_pajek('igfile.net') 

$ head igfile.net 
*Vertices 3 
1 "spam" 
2 "eggs" 
3 "ham" 
*Edges 
1 2 
2 3

Tags: 文件程序net标签spamheadeggslabel
1条回答
网友
1楼 · 发布于 2024-06-28 19:48:24

你的同事很好,但他还是错了。:)要设置的右属性称为id

g = ig.Graph(vertex_attrs={'id': ['spam', 'eggs', 'ham']}, edges=[(1,0), (1,2)])

(实际上我没有在Python中尝试过,因为我在安装pythonigraph时遇到了困难。但它在R中工作得很好,而且它们调用的是相同的C代码,所以我99%肯定它在Python中也能工作。你能试试吗?)在

相关问题 更多 >