#!/usr/bin/env python # coding: utf-8 # # Node Centrality in SAN # ### - Degree Centrality # In[2]: import networkx as nx import matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') g = nx.Graph() g.add_edge(1,2) g.add_edge(1,3) g.add_edge(1,4) g.add_edge(2,3) g.add_edge(3,4) g.add_edge(4,5) g.add_edge(4,6) g.add_edge(5,6) g.add_edge(5,7) g.add_edge(5,8) g.add_edge(6,7) g.add_edge(6,8) g.add_edge(7,8) g.add_edge(7,9) nx.draw(g, node_size=500, with_labels=True, font_size=16) plt.show() # In[3]: degree_centrality = nx.degree_centrality(g) # In[4]: degree_centrality # In[5]: type(degree_centrality) # In[6]: print degree_centrality.items() # In[7]: import operator def sort_map(map): sortedList = map.items() sortedList.sort(key=operator.itemgetter(1), reverse=True) return sortedList # In[8]: sorted_degree_centrality = sort_map(degree_centrality) # In[9]: sorted_degree_centrality # ### - Closeness Centrality # In[10]: closeness_centrality = nx.closeness_centrality(g) # In[11]: closeness_centrality # In[12]: sorted_closeness_centrality = sort_map(closeness_centrality) # In[13]: sorted_closeness_centrality # ### - Betweenness Centrality # In[14]: bet_centrality = nx.betweenness_centrality(g) # In[15]: bet_centrality # In[16]: sorted_bet_centrality =sort_map(bet_centrality) # In[17]: sorted_bet_centrality # ### - Eigenvector Centrality # In[18]: eigenvector_centrality = nx.eigenvector_centrality(g) # In[19]: eigenvector_centrality # In[20]: sorted_eigenvector_centrality= sort_map(eigenvector_centrality) # In[21]: sorted_eigenvector_centrality # ### - Build a table with four centralities # # In[22]: rounded_degree_centrality = {k: round(v, 3) for k, v in degree_centrality.items()} # In[23]: rounded_closeness_centrality = {k: round(v, 3) for k, v in closeness_centrality.items()} # In[24]: rounded_bet_centrality = {k: round(v, 3) for k, v in bet_centrality.items()} # In[25]: rounded_eigenvector_centrality = {k: round(v, 3) for k, v in eigenvector_centrality.items()} # In[26]: table = [[node, rounded_degree_centrality[node], rounded_closeness_centrality[node], rounded_bet_centrality[node], rounded_eigenvector_centrality[node]] for node in g.nodes()] # In[27]: table