首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据图的模块性改变networkx图中节点的颜色

如何根据图的模块性改变networkx图中节点的颜色
EN

Stack Overflow用户
提问于 2021-04-28 14:59:45
回答 1查看 330关注 0票数 0

目前,我有一个基于度中心度来更改节点颜色和大小的NetworkX图,但我希望不是基于度中心度来更改颜色,而是基于模块化来更改节点的颜色,最好是在计算模块化时使用标签传播。

我尝试了更改颜色的方法,就像我在代码中根据度数中心度进行更改一样,但只得到了错误,因为度数中心度有多个值,而模块性只有一个值。

预期的结果是让节点的颜色根据模块性而不是度中心性而变化,同时保持节点的大小基于度中心性。

此处提供了此项目中使用的CSV文件:https://www.mediafire.com/file/q0kziy9h251fcjf/nutrients.csv/file

以下是该项目的代码

代码语言:javascript
复制
import networkx as nx
import matplotlib.pyplot as plt
import networkx.algorithms.community as nx_com
import numpy as np

# create graph from data
with open("nutrients.csv", "r") as f:
    G = nx.parse_edgelist(f.readlines(), delimiter=",")

# centrality
deg_centrality = nx.degree_centrality(G)
centrality = np.fromiter(deg_centrality.values(), float)

# modularity
mod = nx_com.modularity(G, nx_com.label_propagation_communities(G))

# plot
pos = nx.spring_layout(G)
nx.draw(G, pos, node_color=centrality, node_size=centrality*2e3)
nx.draw_networkx_labels(G, pos)
plt.show()
EN

回答 1

Stack Overflow用户

发布于 2021-04-29 15:47:00

我解决了这个问题。这就是答案

代码语言:javascript
复制
import networkx as nx
import matplotlib.pyplot as plt
import networkx.algorithms.community as nx_com
import numpy as np
import community as community_louvain

# create graph from data
with open("nutrients.csv", "r") as f:
    G = nx.parse_edgelist(f.readlines(), delimiter=",")

# centrality
deg_centrality = nx.degree_centrality(G)
centrality = np.fromiter(deg_centrality.values(), float)

# modularity
label = community_louvain.best_partition(G)
mod = community_louvain.modularity(label, G)
values = [label.get(node) for node in G.nodes()]


# plot
pos = nx.spring_layout(G)
nx.draw(G, pos, node_color=values, node_size=centrality*2e3)
nx.draw_networkx_labels(G, pos)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67295275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档