Professional Documents
Culture Documents
Implementasi Sna Dengan Python
Implementasi Sna Dengan Python
Implementasi Sna Dengan Python
Dibuat oleh:
Shine Crossifixio Sianturi (185314091)
Kevin Silvanus Hutabarat (195314064)
Raja Purba (195314170)
import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline
import warnings; warnings.simplefilter('ignore’)
Penjelasan
- Import network berfungsi untuk analisis jaringan dalam python yang akan disimpan ke variable nx.
- Import matplotlib.pyplot berfungsi untuk mengvisualisasikan data dalam bentuk plot.
- Import warnings berfungsi untuk mengabaikan peringatan penghentian program dalam python.
G_symmetric = nx.Graph()
G_symmetric.add_edge('Bagas', 'Tian')
G_symmetric.add_edge('Bagas', 'Damianus')
G_symmetric.add_edge('Bagas', 'Galang')
G_symmetric.add_edge('Bagas', 'Monic')
G_symmetric.add_edge('Tian', 'Monic')
G_symmetric.add_edge('Monic', 'Damianus')
G_symmetric.add_edge('Nanda', 'Galang')
G_symmetric.add_edge('Nanda', 'Bagas')
print(nx.info(G_symmetric))
Output
G_weighted = nx.Graph()
Output :
#clustering coefficient
nx.clustering(G_symmetric,'Monic')
Output: 0.6666666666666666
#distance
nx.shortest_path(G_symmetric, 'Monic', 'Galang’)
Output: ['Monic', 'Bagas', 'Galang']
nx.shortest_path_length(G_symmetric, 'Monic', 'Galang’)
Output: 2
#Breadth-first search
S = nx.bfs_tree(G_symmetric, 'Bagas')
nx.draw_networkx(S)
S = nx.bfs_tree(G_symmetric, 'Monic')
nx.draw_networkx(S)
#Eccentricity
nx.eccentricity(G_symmetric,'Bagas’)
Output : 1
#Centrality measures
#Degree Centrality
nx.degree_centrality(G_symmetric)
Output :
{ 'Bagas': 1.0,
'Damianus': 0.4,
'Galang': 0.4,
'Monic': 0.6000000000000001,
'Nanda': 0.4,
'Tian': 0.4}
#Eigenvector Centrality
nx.eigenvector_centrality(G_symmetric)
Output :
{ 'Bagas': 0.6006686104947806,
'Damianus': 0.3545677660798074,
‘Galang': 0.30844592433424667,
'Monic': 0.4443904166426225,
'Nanda': 0.30844592433424667,
'Tian': 0.3545677660798074 }
#Closeness Centrality
nx.closeness_centrality(G_symmetric)
Output :
{ 'Bagas': 1.0,
'Damianus': 0.625,
'Galang': 0.625,
'Monic': 0.7142857142857143,
'Nanda': 0.625,
'Tian': 0.625}
#Betweenness Centrality
nx.betweenness_centrality(G_symmetric)
Output :
{ 'Bagas': 0.65,
‘Damianus': 0.0,
'Galang': 0.0,
'Monic': 0.05,
'Nanda': 0.0,
'Tian': 0.0}
pos = nx.spring_layout(G_symmetric)
betCent = nx.betweenness_centrality(G_symmetric, normalized=True, endpoints=True)
node_color = [20000.0 * G_symmetric.degree(v) for v in G_symmetric]
node_size = [v * 10000 for v in betCent.values()]
plt.figure(figsize=(7,7))
nx.draw_networkx(G_symmetric, pos=pos, with_labels=True,
node_color=node_color,
node_size=node_size )
plt.axis('off’);
Output :
#label dari node dengan sentralitas antara tertinggi
sorted(betCent, key=betCent.get, reverse=True)[:6]
Output :
['Bagas', 'Monic', 'Tian', 'Damianus', 'Galang', 'Nanda']
Penjelasan
• G_symmetric = nx.Graph() berfungsi untuk membuat node yang akan dijadikan dalam bentuk graph dan disimpan di dalam
variabel nx.
• G_symmetric.add_edge(‘n1’, ‘n2’) berfungsi untuk menggabungkan node-node yang dimana n1 dan n2 merupakan kedua node
yang saling berhubungan.
• print(nx.info(G_symmetric)) berfungsi untuk mencetak graph dengan 6 node dan 8 edge dimana edge adalah penghubung
node.
• plt.figure(figsize=(x,y)) berfungsi untuk mengatur ukuran graph dimana x adalah koordinat garis horizontal dan y adalah
koordinat garis vertical.
• nx.draw_networkx(G_symmetric) berfungsi untuk mencetak hasil graph.
• G_weighted = nx.Graph() berfungsi untuk memberi nilai bobot tiap node yang akan dijadikan dalam bentuk graph dan
disimpan di dalam variabel nx.
• G_weighted.add_edge(‘n1', ‘n2', weight) berfungsi untuk memberikan nilai bobot dari tiap node yang sudah terhubung.
• elarge dan esmall berfungsi untuk membuat relasi antar node. Untuk elarge ditandai dengan garis tebal, sedangkan esmall
ditandai dengan garis putus-putus.
• pos = nx.spring_layout(G_weighted) merupakan posisi untuk semua node
Penjelasan
• nx.draw_networkx_nodes(G_weighted, pos, node_size) berfungsi untuk mengatur ukuran node
• nx.draw_networkx_edges berfungsi untuk mengatur ukuran edge
• nx.draw_networkx_labels berfungsi untuk memberi nama tiap node
• plt.axis('’) berfungsi untuk mengatur border. Jika on maka border tersebut muncul. Jika off, maka border
tersebut hilang.
• plt.show(); berfungsi untuk mencetak hasil graph
• nx.clustering berfungsi untuk menampilkan hasil koefisien clustering
• nx.degree berfungsi untuk menampilkan jumlah node yang terhubung dengan node yang ditentukan.
Misalkan Monic mempunyai hubungan dengan 3 node yaitu Damianus, Bagas, dan Tian.
• nx.shortest_path berfungsi untuk menampilkan hasil jarak terpendek dari tiap node yang ditentukan.
• nx.shortest_path_length berfungsi untuk menampilkan berapa kali node itu berproses ke node lain
Penjelasan
• S = nx.bfs_tree berfungsi untuk memproses hubungan antar node di variabel S.
• nx.draw_networkx(S) berfungsi untuk menampilkan hubungan antar node.
• nx.eccentricity berfungsi untuk menentukan ukuran dalam graph yang digunakan dalam analisis jaringan.
• nx.degree_centrality berfungsi untuk menentukan ukuran centrality measures dalam graph yang digunakan dalam
analisis jaringan.
• nx.eigenvector_centrality berfungsi untuk menentukan ukuran Eigen Vector dalam graph yang digunakan dalam
analisis jaringan.
• nx.closeness_centrality berfungsi untuk menentukan ukuran closeness centrality dalam graph yang digunakan
dalam analisis jaringan.
• nx.betweenness_centrality berfungsi untuk menentukan ukuran betweenness centrality dalam graph yang
digunakan dalam analisis jaringan.
• betCent = nx.betweenness_centrality(G_symmetric, normalized=True, endpoints=True) berfungsi unutuk
menghitung nilai betCent
• node_color = [20000.0 * G_symmetric.degree(v) for v in G_symmetric] berfungsi untuk mengatur warna pada
node
Penjelasan
• node_size = [v * 10000 for v in betCent.values()] berfungsi untuk mengatur ukuran node
• plt.figure(figsize=(x,y)) berfungsi untuk mengatur ukuran graph dimana x adalah koordinat garis horizontal dan y
adalah koordinat garis vertical.
• nx.draw_networkx(G_symmetric, pos=pos, with_labels=True,
node_color=node_color,
node_size=node_size )
berfungsi unutuk memberi warna pada label node
• plt.axis('’) berfungsi untuk mengatur border. Jika on maka border tersebut muncul. Jika off, maka border tersebut
hilang.
• sorted(betCent, key=betCent.get, reverse=True)[:6] berfungsi untuk menampilkan hasil sorted pada node