『Networkx』常用方法
阿新 • • 發佈:2017-09-25
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』常用方法