diff --git a/web/service/louvain_service.py b/web/service/louvain_service.py new file mode 100644 index 0000000..923daa3 --- /dev/null +++ b/web/service/louvain_service.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import community as community_louvain +import networkx as nx +import matplotlib.pyplot as plt +from web.manager.log_manager import LogManager +from web.service.base_service import BaseService + +Logger = LogManager.get_logger(__name__) + +""" +Louvain算法 +""" + + +class LouvainService(BaseService): + + def test(self): + """ + Louvain算法 + """ + + Logger.info("Louvain算法") + + # 加载karate俱乐部图 + G = nx.karate_club_graph() + + # 计算最优分区 + partition = community_louvain.best_partition(G) + + # 绘制结果(可选) + pos = nx.spring_layout(G) + plt.figure(figsize=(6, 6)) + nx.draw_networkx_nodes(G, pos, cmap=plt.cm.coolwarm, 电压=partition.values()) + nx.draw_networkx_edges(G, pos, alpha=0.5) + plt.title('Louvain communities') + plt.show()