Matplotlib 如何在忽略其他社区的情况下从networkx绘制特定社区?

Matplotlib 如何在忽略其他社区的情况下从networkx绘制特定社区?,matplotlib,graph,networkx,graph-theory,jsnetworkx,Matplotlib,Graph,Networkx,Graph Theory,Jsnetworkx,我有一个由103个社区组成的网络。第9社区拥有最多的约12000名成员。我想画这个,因为整个图有大约70k个节点,而且太大了 largest_subgraph = max(nx.connected_component_subgraphs(graph),key=len) partition=community.best_partition(largest_subgraph) values=[partition.get(node) for node in largest_subgraph.node

我有一个由103个社区组成的网络。第9社区拥有最多的约12000名成员。我想画这个,因为整个图有大约70k个节点,而且太大了

largest_subgraph = max(nx.connected_component_subgraphs(graph),key=len)

partition=community.best_partition(largest_subgraph)
values=[partition.get(node) for node in largest_subgraph.nodes()]
list_com=partition.values()

dict_nodes={}

for each_item in partition.items():
    community_num=each_item[1]
    community_node=each_item[0]
    if community_num in dict_nodes:
        value=dict_nodes.get(community_num) + ' | ' + str(community_node)
        dict_nodes.update({community_num:value})
    else:
        dict_nodes.update({community_num:community_node})

plt.rcParams['figure.figsize']= [12, 8]
G_comm=nx.Graph()

G_comm.add_nodes_from(dict_nodes)

mod=community.modularity(partition,largest_subgraph)

plt.rcParams['figure.figsize']= [12, 8]
pos_louvain=nx.spring_layout(G_comm)
nx.draw_networkx(G_comm, pos_louvain, with_labels=True,node_size=200,font_size=11,label='Modularity =' + str(round(mod,3)) +
                    ', Communities=' + str(len(G_comm.nodes())))
plt.suptitle('Number of Communities(Louvain Algorithm)',fontsize=22,fontname='Arial')
plt.box(on=None)
plt.axis('off')
plt.legend(bbox_to_anchor=(1,0), loc='best', ncol=1)
plt.savefig('louvain1.png',dpi=400, bbox_inches='tight')
我能够得到这个,但我想看到的是一个显示社区内部情况的图表。作为最大的社区,我认为社区9将是一个理想的例子。

您可以通过以下方式获取社区9中的节点数:

nodes_in_community9 = [node for node,community in partition.items() if community == 9]
S = G.subgraph(nodes_in_community9)

S将是一个NetworkX图,其中只有community 9中的节点及其之间的边。不幸的是,NetworkX可能仍然无法绘制12000个节点的图形。像Gephi这样的替代品可能更好。

谢谢Johannes。如果不太麻烦的话,我还有一个问题。如何导出子图以便在Gephi上使用它?我试着先把它转换成数据帧,但这可能有点笨拙。当然。您可以使用nx.write_gexf(S,'mygraph.gexf')或nx.write_gml(S,'mygraph.gml')将NetworkX图形写入文件扩展名.gexf和.gml。在Gephi中,您可以通过file/open打开这些文件类型中的任何一种。