/graphvy

A kivy app for drawing and laying out dynamic graphs.

Primary LanguagePythonMIT LicenseMIT

Graphvy Preview

This is a dynamic graph layout app written with Kivy and graph-tool. Instructions for installing graph-tool tool can be found here. Run with python3 -m graphvy.

To load arbitrary rules for dynamic graphs, one needs a py file that defines a local variable named rule such that rule(G) (where G is our graph) returns a callable that updates G when called. Any imported files should be placed in 'rules/bases' and imported with from .rules.bases.my_rule.

To allow proper coloring of edge/node states, rules should have attributes node_states, edge_states that are dicts with keys being the names of the node/edge properties and values being 1 or 2-tuples of either number of states or the range of the states (if continuous-valued). These attributes are only needed for coloring; optional otherwise.

Press F12 to reveal console.

#TODO

  • path highlighter
  • bezier lines (only when paused; computationally heavy)
  • degree histogram
  • hide/filter nodes
  • recycleview for adjacencylist # foresee complications with updating adjacency list items
  • legend for colors/states
  • break up ui components / dialogues, popups, dropdowns all stylistically disjoint --- need to improve these