1. 程式人生 > >『Networkx』常用方法

『Networkx』常用方法

bsp mage alpha [0 name any 自由 column 問題

這是一個用於分析‘圖‘結構的包,由於我只是用到了淺顯的可視化功能,所以這個介紹會對其使用淺嘗輒止。

解決matplotlib中文字體缺失問題,

from pylab import mpl

mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘]    # 指定默認字體
mpl.rcParams[‘axes.unicode_minus‘] = False        # 解決保存圖像是負號‘-‘顯示為方塊的問題

讀入數據,

import pandas as pd
import networkx as nx

data = pd.read_csv(u‘C:\Projects\python3_5\Gephi\\17級學碩導師情況.csv‘)

由於圖的edge輸入格式是(節點1,節點2)的形式,所以我們需要整理一下數據格式,

edges = [edge for edge in zip(data[data.columns[0]],data[‘Unnamed: 2‘])]
edges.extend([edge for edge in zip(data[data.columns[0]],data[‘Unnamed: 3‘])])
edges.extend([edge for edge in zip(data[data.columns[5]],data[‘Unnamed: 7‘])])
edges.extend([edge for edge in zip(data[data.columns[5]],data[‘Unnamed: 8‘])])
edges = pd.DataFrame(edges,columns=[‘導師‘,‘學生‘]).dropna(how=‘any‘)

畫圖,這裏面采取的是為Graph對象添加edge的形式,也可添加node等等,

實際的體會是異常自由,節點本事沒有類型限制,也就是說你可以把數字、字符、其他格式的對象乃至另一個Graph賦為一個節點,當然這在可視化時意義不大,但是networkx包最大功用其實是圖分析而非可視化(實際上可視化是一個輔助功能),我了解不多,也只能幫著拍拍手叫叫好了(逃~~

G = nx.Graph()
G.add_edges_from([edge for edge in zip(edges[‘導師‘],edges[‘學生‘])])

nx.draw(G,
        # pos = nx.random_layout(G),
        # pos = nx.spring_layout(G),
        # pos = nx.shell_layout(G),
        pos = nx.circular_layout(G),
        node_color = ‘r‘,
        # edge_color = ‘b‘,
        with_labels = True,
        font_size =20,
        node_size =1000,
        alpha=0.3)

  技術分享

由於涉及隱私,這裏的圖我把標簽取消了,不過實際效果也就這樣,差不太多。

『Networkx』常用方法