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 [ ]: