In [1]:
import networkx as nx #Knjizica, ki jo uporabljamo za ustvarjanje in analiziranje mreze
import random
import matplotlib.pyplot as plt
from IPython.display import Image
In [2]:
#Knjižica networkx je izredno uporabna za ustvarjanje in analiziranje različnih 
#vrst mrež (tako usmerjene kot tudi neusmerjene). V prvem koraku moramo definirati 
#objekt, ki bo hranil vse lasnosti o vozliščih in povezavah mreže.'''
Image(filename='SLIKA_1.png')
Out[2]:
In [3]:
G=nx.Graph()
In [4]:
#Posamezna vozlisca lahko dodajamo v mrezo z ukazom
G.add_node(0)
#Mrezo smo tako dodali vozlišče z imenom oz. ID-jem 0
#Izpis vseh vozlisc (Nacin 1)
print("node name = ",G.nodes())
node name =  [0]
In [5]:
#Vozlišča lahko tudi odvzemamo
G.remove_node(0)
print("node name = ",G.nodes())

G.add_node("Rene")
for i in G:
	print("node name = ",i)
#Pocistimo podatke o mrezi.
G.clear()
node name =  []
node name =  Rene
In [6]:
#V spodnji vrstici ustvarimo polje imen. Vsak zapis v 
#polju pa predstavlja posamezna vozlisca mreze
nodes=["Peter","Andreja","Marko","Maja","Boris","Petra","Marjan","Monika","Milan","Tina"]

spol={}
spol["Peter"]="M"
spol["Marko"]="M"
spol["Boris"]="M"
spol["Marjan"]="M"
spol["Milan"]="M"

spol["Andreja"]="F"
spol["Maja"]="F"
spol["Petra"]="F"
spol["Monika"]="F"
spol["Tina"]="F"
#Vozlisca mreze iz zapisa ustvarimo s ukazom.
G.add_nodes_from(nodes)
In [7]:
#Vozliscem lahko dodamo tudi atribute
nx.set_node_attributes(G,'spol',spol)
bb = nx.betweenness_centrality(G)
node_color=[]
print ("-------------")
for i in G:
    if G.node[i]['spol']=="M":
        node_color.append("blue")
    else:
        node_color.append("pink")
    print ("node name = ",i,"(",G.node[i]['spol'],")")

#Sedaj bomo ustvarili nakljucne povezave med vozlisci:
for i in G:
	j=random.randint(0,len(nodes)-1)
	jj=nodes[j]
	while G.has_edge(i,jj)==True or i==jj:
			j=random.randint(0,len(nodes)-1)
			jj=nodes[j]
	G.add_edge(i,jj)

'''for i in G:
	print(i,"pozna %d osebo/e"%(G.degree(i)))
	for j in G.neighbors(i):
		print(j)'''
#Dolocitev nekaterih topoloskih mer
kavg=float(sum(G.degree().values()))/float(len(G))
print("kavg = ",kavg)
print("<l> = %.1f"%(nx.average_shortest_path_length(G)))
print("<E> = %.2f"%(1.0/nx.average_shortest_path_length(G)))
print("<C> = %.2f"%(nx.average_clustering(G)))

#Porazdelitev vozlisc
lege=nx.spring_layout(G)
ki=[]
for i in G:
	ki.append(float(G.degree(i))*10.0)
print (ki)
#izris mreze
nx.draw_networkx_nodes(G,lege,node_size=ki,node_color=node_color,alpha=0.9,linewidths=0.7)
nx.draw_networkx_edges(G,lege,alpha=0.7)
plt.show()
-------------
node name =  Peter ( M )
node name =  Andreja ( F )
node name =  Marko ( M )
node name =  Maja ( F )
node name =  Boris ( M )
node name =  Petra ( F )
node name =  Marjan ( M )
node name =  Monika ( F )
node name =  Milan ( M )
node name =  Tina ( F )
kavg =  2.0
<l> = 2.3
<E> = 0.44
<C> = 0.00
[10.0, 40.0, 10.0, 10.0, 20.0, 10.0, 10.0, 40.0, 10.0, 40.0]