Implementasi Sna Dengan Python

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 16

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 : Graph with 6 nodes and 8 edges


plt.figure(figsize=(5,5))
nx.draw_networkx(G_symmetric);

Output
G_weighted = nx.Graph()

G_weighted.add_edge('Bagas', 'Tian', weight=25)


G_weighted.add_edge('Bagas', 'Damianus', weight=8)
G_weighted.add_edge('Bagas', 'Galang', weight=11)
G_weighted.add_edge('Bagas', 'Monic', weight=1)
G_weighted.add_edge('Tian', 'Monic',weight=1)
G_weighted.add_edge('Monic','Damianus', weight=1)
G_weighted.add_edge('Nanda', 'Galang', weight=8)
G_weighted.add_edge('Nanda', 'Bagas', weight=4)

elarge = [(u, v) for (u, v, d) in G_weighted.edges(data=True) if d['weight'] > 8]


esmall = [(u, v) for (u, v, d) in G_weighted.edges(data=True) if d['weight'] <= 8]

pos = nx.circular_layout(G_weighted) # positions for all nodes


# nodes
nx.draw_networkx_nodes(G_weighted, pos, node_size=700)
# edges
nx.draw_networkx_edges(G_weighted, pos, edgelist=elarge,width=6)
nx.draw_networkx_edges(G_weighted, pos, edgelist=esmall,width=6, alpha=0.5, edge_color='b', style='dashed’)
# labels
nx.draw_networkx_labels(G_weighted, pos, font_size=20, font_family='sans serif');
plt.axis('off’)
plt.show();

Output :
#clustering coefficient
nx.clustering(G_symmetric,'Monic')
Output: 0.6666666666666666

#Network Distance Measures


#Degree
nx.degree(G_symmetric, 'Monic’)
Output: 3

#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

You might also like