In [1]:
from IPython.html import widgets
from IPython.display import display
from eventful_graph import EventfulGraph
from widget_forcedirectedgraph import ForceDirectedGraphWidget, publish_js
publish_js()


Test


In [2]:
floating_container = widgets.PopupWidget(default_view_name='ModalView')
floating_container.description = "Dynamic D3 rendering of a NetworkX graph"
floating_container.button_text = "Render Window"
floating_container.set_css({
    'width': '420px',
    'height': '350px'}, selector='modal')

G = EventfulGraph()
d3 = ForceDirectedGraphWidget(G)

floating_container.children = [d3]
display(floating_container)

The following code creates an animation of some of the plot's properties.


In [3]:
import time

G.add_node(1, fill="red", stroke="black")
time.sleep(1.0)

G.add_node(2, fill="gold", stroke="black")
time.sleep(1.0)

G.add_node(3, fill="green", stroke="black")
time.sleep(1.0)

G.add_edges_from([(1,2),(1,3), (2,3)], stroke="#aaa", strokewidth="1px", distance=200, strength=0.5)
time.sleep(1.0)

G.adj[1][2]['distance'] = 20
time.sleep(1.0)

G.adj[1][3]['distance'] = 20
time.sleep(1.0)

G.adj[2][3]['distance'] = 20
time.sleep(1.0)

G.node[1]['r'] = 16
time.sleep(0.3)
G.node[1]['r'] = 8
G.node[2]['r'] = 16
time.sleep(0.3)
G.node[2]['r'] = 8
G.node[3]['r'] = 16
time.sleep(0.3)
G.node[3]['r'] = 8

G.node[1]['fill'] = 'purple'
time.sleep(0.3)
G.node[1]['fill'] = 'red'
G.node[2]['fill'] = 'purple'
time.sleep(0.3)
G.node[2]['fill'] = 'gold'
G.node[3]['fill'] = 'purple'
time.sleep(0.3)
G.node[3]['fill'] = 'green'
time.sleep(1.0)

G.node.clear()
time.sleep(1.0)

floating_container.close()