python - 如何在圆形图中绘制社区网络
问题描述
我有一个大图,我用 Louvain 算法从中提取了一个社区网络。现在我将在圆形图中绘制这些社区的表示,如下所示:
我怎样才能做到这一点?是否有任何编程语言的工具或库可以做到这一点?先感谢您。
解决方案
对于图形布局,您有 NetworkX's nx.circular_layout
,它将按上述方式排列节点。不过,您可能希望在某些方面进行与我在这里所做的不同的自定义。例如,对于边缘颜色,我刚刚选择了每个边缘的第一个节点,并为该节点的精确分区设置了颜色。您还可以添加重要节点的标签,例如具有高中心度的节点,节点大小也相同。
这是一个使用随机图的示例:
from community import community_louvain
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import networkx as nx
G = nx.barabasi_albert_graph(300, 2)
# compute the best partition
partition = community_louvain.best_partition(G)
cmap = cm.get_cmap('viridis', max(partition.values()) + 1)
plt.figure(figsize=(12,8))
# draw the graph
pos = nx.circular_layout(G)
# color the nodes according to their partition
cmap = cm.get_cmap('viridis', max(partition.values()) + 1)
nx.draw_networkx_nodes(G, pos, partition.keys(), node_size=100,
cmap=cmap, node_color=list(partition.values()))
edge_colors = [partition[edge[0]] for edge in G.edges()]
nx.draw_networkx_edges(G,
pos,
alpha=0.5,
edge_color=edge_colors)
plt.box(False)
推荐阅读
- javascript - 使用 addEventListener 改变显示风格
- postgresql - 为什么在 postgres `CHECK` 约束中不能使用 `IF` 子句?
- reactjs - Jest 性能问题
- angular - 使用 Angular 渲染 IE 11 的奇怪行为
- python - 在管道中使用 Imputer 不会删除 NaN,会给出“输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值”
- git - 推送时Git重置硬不显示更改
- networking - 如何在 Inet 3.6 中将队列长度从 ppp 传递到 IP 层
- amazon-web-services - 如何使用 sns 警报的 lambda (python) 发送松弛通知
- react-native - 似乎无法在 ubuntu 上创建 reactnative 应用程序不断出现错误:找不到模块“fs-minipass”
- c++ - 仅打印数字的小数位