import platform
platform.platform()
platform.python_version()
import networkx as nx
nx.__version__
from pylab import *
%matplotlib inline
import DSTG
from IPython.core.display import Image
papus=nx.pappus_graph()
DSTG.ispis(papus.edges(),80)
figure(figsize=(8,8))
nx.draw(papus,with_labels=True)
node_shape može poprimiti neku od vrijednosti iz skupa {s, o, ^, >, v, <, d, p, h, 8}
Bridovima možemo pridružiti boje iz već neke predefinirane matplotlib palete boja koju navedemo u varijabli edge_cmap, a u edge_color varijabli navedemo numeričke vrijednosti za svaki brid koje će biti pretvorene u odgovarajuću boju.
nx.draw_circular(papus,node_color="yellow",edgecolors='black', node_shape='p',node_size=800,
edge_cmap=cm.Dark2, edge_color=range(papus.number_of_edges()),with_labels=True)
Na isti način možemo pridružiti različite boje vrhovima, samo u tom slučaju koristimo varijable cmap i node_color.
nx.draw_circular(papus,node_color=range(papus.number_of_nodes()),node_shape='p',node_size=800,
cmap=cm.summer,with_labels=True,edgecolors='black')
print(colormaps())
figure(figsize=(6,6),facecolor='w')
G=nx.house_graph()
pozicije={0:(0,0),1:(1,0),2:(0,1),3:(1,1),4:(0.5,2.0)}
axis('off')
margins(x=0.1,y=0.2)
nx.draw_networkx_nodes(G,pos=pozicije,node_size=2000,nodelist=[4])
nx.draw_networkx_nodes(G,pos=pozicije,node_size=3000,nodelist=[0,1,2,3],node_color='b')
nx.draw_networkx_edges(G,pos=pozicije,alpha=0.5,width=6,edgelist=[(0,2),(0,1)])
nx.draw_networkx_edges(G,pos=pozicije,width=4,style='dashed',edgelist=[(2,4),(3,4)],edge_color='r')
nx.draw_networkx_edges(G,pos=pozicije,width=3,style='dotted',edgelist=[(2,3)],edge_color='k')
nx.draw_networkx_edges(G,pos=pozicije,width=2,style='dashdot',edgelist=[(1,3)],edge_color='k')
nx.draw_networkx_edge_labels(G,pos=pozicije,edge_labels={(0,1):'prvi',(2,3):'drugi'},label_pos=0.7,font_size=16,font_color='r')
nx.draw_networkx_labels(G,pos=pozicije,font_size=16,font_color='w',font_weight='bold');
nx.draw(G,pos=pozicije,node_size=[500,600,900,1200,1600],node_color=['r','r','#F0E68C','b','b'],width=6,with_labels=True)
nx.layout.circular_layout(G)
nx.circular_layout(G)
nx.shell_layout(G)
nx.layout.shell_layout(G)
nx.layout.spring_layout(G)
nx.spring_layout(G)
geom=nx.random_geometric_graph(200,0.14)
geom.number_of_nodes(),geom.number_of_edges()
nx.draw(geom,node_size=20)
gr=nx.Graph()
bridovi=[(randint(k+1),k+2) for k in range(1000)]
gr.add_edges_from(bridovi)
nx.draw(gr,node_size=10)
gr.number_of_nodes(),gr.number_of_edges()
nx.draw_circular(gr,node_size=10,node_color="yellow",edgecolors='black')
gr2=nx.balanced_tree(5,3)
pos2=nx.nx_agraph.graphviz_layout(gr2,prog='twopi',args='')
figure(figsize=(7,7))
nx.draw(gr2,pos2,node_size=20,node_color="yellow",edgecolors='black')
gr3=nx.balanced_tree(3,4)
pos3=nx.nx_agraph.graphviz_layout(gr3,prog='twopi',args='')
figure(figsize=(5,5))
nx.draw(gr3,pos3,node_size=20,node_color="yellow",edgecolors='black')
graf1=nx.MultiGraph({0:[1,2,3],1:[1,1,1],2:[2,4,4],3:[4,4,4]})
figure(figsize=(5,3))
nx.draw(graf1,with_labels=True)
graf1_viz=nx.nx_agraph.to_agraph(graf1)
print(graf1_viz.string())
graf1_viz.draw('graf1.png',prog='dot')
Image(filename='graf1.png')
graf1_viz.draw('graf2.png',prog='circo')
Image(filename='graf2.png')
graf1_viz.draw('graf3.png',prog='neato')
Image(filename='graf3.png')
graf1_viz.draw('graf4.png',prog='fdp')
Image(filename='graf4.png')
graf1_viz.graph_attr['splines']='true'
graf1_viz.draw('graf5.png',prog='twopi')
Image(filename='graf5.png')
import pygraphviz as pyviz
graf1_pyviz=pyviz.AGraph({0:[1,2,3],1:[1,1,1],2:[2,4,4],3:[4,4,4]},strict=False)
graf1_pyviz.draw('graf_pyviz.png',prog='dot')
Image(filename='graf_pyviz.png')
sadržaj datoteke s2.dot
f=open('s2.dot','r')
s2=f.read()
f.close()
print(s2)
graf2=pyviz.AGraph('s2.dot')
graf2.draw('graf6.png',prog='dot')
Image(filename='graf6.png')
graf2.draw('graf7.png',prog='fdp')
Image(filename='graf7.png')
f=open('s3.dot','r')
s3=f.read()
f.close()
print(s3)
graf3=pyviz.AGraph('s3.dot')
graf3.draw('graf8.png',prog='dot')
Image(filename='graf8.png')
graf3.draw('graf9.png',prog='circo')
Image(filename='graf9.png')
f=open('s4.dot','r')
s4=f.read()
f.close()
print(s4)
graf4=pyviz.AGraph('s4.dot')
graf4.draw('graf10.png',prog='dot')
Image(filename='graf10.png')
f=open('s5.dot','r')
s5=f.read()
f.close()
print(s5)
graf5=pyviz.AGraph('s5.dot')
graf5.draw('graf11.png',prog='dot')
Image(filename='graf11.png')
digraf1=nx.MultiDiGraph({0:[1,2,3],1:[1,1,1],2:[2,4,4],3:[4,4,4]})
nx.draw(digraf1,with_labels=True)
d1=nx.nx_agraph.to_agraph(digraf1)
print(d1.string())
d1.draw('digraf1.png',prog='dot')
Image(filename='digraf1.png')
digraf_pyviz=pyviz.AGraph({0:[1,2,3],1:[1,1,1],2:[2,4,4],3:[4,4,4]},strict=False,directed=True)
digraf_pyviz.draw('digraf_pyviz.png',prog='dot')
Image(filename='digraf_pyviz.png')
f=open('s6.dot','r')
s6=f.read()
f.close()
print(s6)
d2=pyviz.AGraph('s6.dot')
d2.draw('digraf2.png',prog='dot')
Image(filename='digraf2.png')
f=open('s7.dot','r')
s7=f.read()
f.close()
print(s7)
d3=pyviz.AGraph('s7.dot')
d3.draw('digraf3.png',prog='circo')
Image(filename='digraf3.png')
P=nx.petersen_graph()
figure(figsize=(6,6))
poz=nx.shell_layout(P,[[5,6,7,8,9],[0,1,2,3,4]])
nx.draw(P,pos=poz,with_labels=True)
Pviz=nx.nx_agraph.to_agraph(P)
print(Pviz.string())
Pviz.draw('petersen1.png',prog='dot')
Image(filename='petersen1.png')
f=open('p2.dot','r')
p2=f.read()
f.close()
print(p2)
petersen2=pyviz.AGraph('p2.dot')
petersen2.draw('petersen2.png',prog='dot')
Image(filename='petersen2.png')
petersen2.draw('petersen2dva.png',prog='circo')
Image(filename='petersen2dva.png')
petersen2.draw('petersen2tri.png',prog='twopi')
Image(filename='petersen2tri.png')
f=open('p3.dot','r')
p3=f.read()
f.close()
print(p3)
petersen3=pyviz.AGraph('p3.dot')
petersen3.draw('petersen3.png',prog='twopi')
Image(filename='petersen3.png')
H=nx.gnm_random_graph(200,500)
figure(figsize=(7,7))
nx.draw(H,node_size=20)
nx.draw_circular(H,node_size=20)
GraphViz je specijaliziran za crtanje grafova pa se stoga dobro snalazi u crtanju grafova s puno vrhova i bridova. Jasno, ako želimo preglednu sliku, slika mora biti većih dimenzija.
H1=nx.nx_agraph.to_agraph(H)
H1.draw('veliki.png',prog='dot')
Image(filename='veliki.png')
H1.draw('veliki2.png',prog='twopi')
Image(filename='veliki2.png')
H1.draw('veliki3.png',prog='fdp')
Image(filename='veliki3.png')
Uz dodatnu opciju splines=True, dobit ćemo lijepu sliku. Budite strpljivi jer u ovom slučaju crtanje slike može malo dulje potrajati.
H1.graph_attr['splines']='true'
H1.draw('veliki4.png',prog='fdp')
Image(filename='veliki4.png')