如何显示igraph输出?

2024-09-28 05:24:50 发布

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

这可能是一个非常简单的问题。我是python新手,非常感谢您的帮助!在

在下面的代码中,我如何实际显示输出而不是内存对象?在

Graph.clusters(g)
Out[106]: <igraph.clustering.VertexClustering at 0x1187659d0>

Graph.community_edge_betweenness(g, clusters=None, directed=True, weights=None)
Out[107]: <igraph.clustering.VertexDendrogram at 0x118765d90>

Tags: 对象内存代码communitynoneoutatgraph
1条回答
网友
1楼 · 发布于 2024-09-28 05:24:50

这取决于你到底想展示什么?举个例子:

import igraph
g = igraph.Graph.Barabasi(n = 20, m = 3)
c = g.clusters()

Python中的print()调用对象的__str__()方法,该方法将其转换为人类可读的内容,在VertexClustering的情况下,每一行表示一个集群(方括号中的集群ID),并列出属于该集群的顶点ID。第一行简单描述:

^{pr2}$

然后,可以将每个簇的成员作为顶点ID的列表进行访问,如下所示:

>>> c[0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

VertexDendrogram对象的情况下,igraph的打印方法甚至可以打印一个漂亮的文本树状图:

>>> f = g.community_fastgreedy()
>>> print(f)
Dendrogram, 20 elements, 19 merges

7 3 14 10 5 16 1 0 9 8 6 2 4 18 12 13 19 15 17 11
| | |  |  | |  | | | | | | | |  |  |  |  |  |  |
`-' |  ` ' |  | | | `-' | `-'  ` '  |  |  ` '
|  |   |   |  | | |  |  |  |    |    |  |   |  
` '   |   |  `-' |  ` '  |    |    |  ` -'  
|     |   |   |  |   |    |    |    |    |    
|     |   ` -'  |   |    |    |    `  '    
|     |     |    |   |    |    |      |       
`  -'     `  '   |    `  '      |       
    |          |      |      |         |       
    |          `   '      `    -'       
    |             |               |            
    `      -'               |            
            |                      |            
            `           '

最后,您可以使用igraph良好的绘图功能显示结果:

i = g.community_infomap()
colors = ["#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00"]
g.vs['color'] = [None]
for clid, cluster in enumerate(i):
    for member in cluster:
        g.vs[member]['color'] = colors[clid]
g.vs['frame_width'] = 0
igraph.plot(g)

在这里,我们根据顶点的簇(社区)成员身份对其进行着色:

vertices colored by cluster membership

相关问题 更多 >

    热门问题