如何在圆形图中绘制社区网络
How to draw a communities network in a circular graph
我有一个大图,我使用 Louvain 算法从中提取了一个社区网络。现在,我将在这样的圆形图中绘制这些社区的表示:
我该怎么做?是否有可以执行此操作的任何编程语言的工具或库?
提前谢谢你。
对于图表布局,您有 NetworkX 的 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)
我有一个大图,我使用 Louvain 算法从中提取了一个社区网络。现在,我将在这样的圆形图中绘制这些社区的表示:
我该怎么做?是否有可以执行此操作的任何编程语言的工具或库? 提前谢谢你。
对于图表布局,您有 NetworkX 的 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)