import sage.misc.banner
banner()
G1=Graph({1:[2,5],2:[2,3],3:[4,4],4:[5]})
print(G1)
Dobivanje PNG slike. Desnim klikom miša na sliku, ona se može spremiti na disk.
G1.plot().show(figsize=(4,4))
G1.plot(graph_border=True).show(figsize=(4,4))
G1.show()
grafSlika=G1.plot(graph_border=True)
grafSlika.show(figsize=(4,4))
ako želimo eksplicitno sami odrediti položaj pojedinog vrha
postoje i algoritmi koji automatski određuju položaj vrhova, a oni se koriste preko opcije layout
pozicije={1:[1,3],2:[-1,2],3:[0,0],4:[2,0],5:[3,2]}
G1.plot(pos=pozicije,loop_size=0.15).show(figsize=(4,4))
G1.plot(pos=pozicije,loop_size=0.15).show(axes=True,figsize=(5,5))
vrhovi grafa raspoređeni po kružnici
G1.plot(layout="circular").show(figsize=(4,4))
automatsko određivanje koordinata vrhova
G1.layout()
G1.layout()
G1.layout_circular()
G1.layout_default()
G1.layout_default()
još neke opcije
možete uočiti problem da se petlja ne vidi, ali kod grafova bez petlji to neće predstavljati problem
G1.show(graph_border=True,loop_size=0.15,figsize=(2,2))
G1.show(loop_size=0.15,figsize=(2,2))
G1.show(loop_size=0.2,figsize=(2,2),axes=True,xmax=3,xmin=0,ymin=-1.5,ymax=1.5)
G1.show(figsize=(2,2),xmax=2.8,xmin=0.6,ymin=-1.1,ymax=1.1,loop_size=0.15)
razlika između plot i show
type(G1.plot())
type(G1.show())
spremanje slika u eps ili pdf format
slika se spremi u tekućem direktoriju ipynb datoteke
G1.plot(pos=pozicije).save('graf.eps')
G1.plot(graph_border=True).save('graf.pdf')
neke opcije s vrhovima
G1.plot(vertex_labels=False).show(figsize=(4,4))
G1.plot(vertex_size=800,graph_border=True,loop_size=0.15).show(figsize=(4,4))
G1.plot(vertex_labels=False,vertex_size=10).show(figsize=(4,4))
G1.plot(vertex_color="yellow").show(figsize=(4,4))
G1.plot(vertex_color=(0,0.9,0.8)).show(figsize=(4,4))
G1.plot(vertex_color={"yellow":[1,3,5],"#a3e4d7":[2,4]}).show(figsize=(4,4))
neke opcije s bridovima
G1.plot(edge_style='dashed',edge_thickness=3,edge_color="blue").show(figsize=(4,4))
G1.edges()
G1.plot(edge_style="dotted",
edge_colors={"blue":[(1,2),(1,5)],"red":[(4,5),(2,2),(2,3),(3,4)]}).show(figsize=(4,4))
G1.plot(edge_style="dashdot",edge_thickness=1.5).show(figsize=(4,4))
ako želimo bridove s oznakama
višestruki bridovi su problematični
G2=Graph({1:{2:'jedan',5:'dva'},2:{2:'tri',3:'cetiri'},3:{4:'pet',4:'sest'},4:{5:'sedam'}})
G2dva=Graph({1:{2:'jedan',5:'dva'},2:{2:'tri',3:'cetiri'},3:{4:['pet','sest']},4:{5:'sedam'}});
G2.plot(edge_labels=True).show(figsize=(4,4))
G2dva.plot(edge_labels=True).show(figsize=(4,4))
G2.plot(edge_labels=True,color_by_label=True).show(figsize=(4,4))
ako želimo usmjereni graf
G3=DiGraph({1:[2],2:[2,3],3:[4],4:[3,5],5:[1]});G3
G3.plot(vertex_colors={"yellow":[1,3,5],"#a3e4d7":[2,4]},edge_colors={"red":G3.edges()}).show(figsize=(4,4))
G4=DiGraph({1:{2:'jedan'},2:{2:'dva',3:'tri'},3:{4:'cetiri'},4:{3:'pet',5:'sest'},5:{1:'sedam'}})
G4.plot(edge_labels=True,vertex_colors={"yellow":[1,3,5],"#a3e4d7":[2,4]},edge_colors={"red":G4.edges()}).show(figsize=(4,4))
jednostavni primjer interaktivnog crtanja potpunih bipartitnih grafova $K_{m,n}$
@interact
def Kmn(m=(3,(1..6)), n=(5,(1..6))):
graf = graphs.CompleteBipartiteGraph(m,n)
graf.show(graph_border=True)
Tetraedar
tetraedar=graphs.TetrahedralGraph()
tetraedar.show()
tetraedar.show(layout="planar")
možete rotirati sliku (s pritisnutom lijevom tipkom miša), zumiranje s "kotačićem" i mnogo drugih opcija koje dobijete desnim klikom na sliku. Ako napišete help(Graph.plot3d), dobit ćete help o dodatnim opcijama da ih sve ovdje ne spominjemo.
tetraedar.plot3d(vertex_size=0.08,viewer='threejs',online=True)
Kocka
kocka=graphs.CubeGraph(3)
kocka.show(layout="spring",vertex_size=500)
kocka.plot(layout="planar",vertex_size=500)
kocka.plot3d(vertex_size=0.08,viewer='threejs',online=True)
Oktaedar
oktaedar=graphs.OctahedralGraph()
oktaedar.show()
oktaedar.plot(layout="planar")
oktaedar.plot3d(vertex_size=0.08,viewer='threejs',online=True,aspect_ratio=[1,1,1.5])
Dodekaedar
dodekaedar=graphs.DodecahedralGraph()
dodekaedar.show()
dodekaedar.plot(layout="planar",vertex_size=30,vertex_labels=False)
dodekaedar.plot3d(vertex_size=0.08,viewer='threejs',online=True)
Ikozaedar
ikozaedar=graphs.IcosahedralGraph()
ikozaedar.show()
ikozaedar.plot(layout="planar")
ikozaedar.plot3d(vertex_size=0.08,viewer='threejs',online=True)
3D prikazi potpunog grafa
graphs.CompleteGraph(3).plot3d(vertex_size=0.08,viewer='threejs',online=True)
možemo postaviti vrhove na željene pozicije u prostoru
graphs.CompleteGraph(3).plot3d(pos3d={0:[0,2,0],1:[1,0,0],2:[0,1,0]},vertex_size=0.08,viewer='threejs',online=True)
graphs.CompleteGraph(7).plot3d(vertex_size=0.08,viewer='threejs',online=True)