# Goulib.graph¶

efficient Euclidian Graphs for NetworkX and related algorithms

In [1]:
from Goulib import notebook
import networkx as nx
from Goulib.graph import *

In [2]:
g=nx.gn_graph(20)
nx.draw_networkx(g)

In [3]:
draw_networkx(g, #improved version over nx.draw_networkx
labels=True, # by default they're off
)

Out[3]:
In [4]:
geo=nx.geographical_threshold_graph(50,25)
geo # NetworkX Graphs do not render in Notebooks...

Out[4]:
<networkx.classes.graph.Graph at 0x1c7b5b265f8>
In [5]:
geo=GeoGraph(geo)
geo # GeoGraphs do !

C:\Anaconda3\lib\site-packages\networkx\drawing\nx_pylab.py:611: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)
if cb.is_numlike(alpha):

Out[5]:
In [6]:
# it's easy to make GeoGraphs look nice
def edge_color(data): # simply define a function that maps edge data to a color
return plt.get_cmap('Blues')(data['length']/.25)
geo.render(edge_color=edge_color, node_size=50) #this will set geo.render_args ...
geo #... so here we display them :-)

Out[6]:
In [7]:
d=to_drawing(geo) # graphs can also be converted or added to a Goulib.Drawing
from Goulib.geom import Circle
c=Circle((0.5,0.5),0.5)
c.color='red'
d.append(c)

Out[7]:
In [8]:
nodes=points_on_sphere(120)
sphere=GeoGraph(nodes=nodes) #GeoGraphs can also be built from n-dim points only
sphere.render(edge_color=edge_color, node_size=50) #this will set geo.render_args ...
sphere

Out[8]:
In [10]:
delauney_triangulation(sphere,'Qz') #creates a new GeoGraph from Delauney triangulation of a GeoGraph's nodes

Out[10]:
In [ ]: