I am looking for a fast working system for working with dynamic directed radial graphs, which allows to perform the following actions:
1) binding coordinates of the nodes to the existing radial grid
2) allow to select a node (center of the radial graph) with respect to which the graph will be built.
3) adding new child nodes to already existing nodes with automatic calculation of the coordinates of the nodes on the grid dynamically with minimal changes in the coordinates of the nodes of the entire graph
4) the ability to build and dynamically change the layout of directed graphs in which the child nodes should be located radially further from the central node (center of the radial graph)
5) choice of nodes that are on the grid in a given radius from this point.
6) remove nodes and edges from the graph
7) The presence of built-in functions that allow to write algorithms for selecting all descendants of a given node or all the ancestors of a given node.
8) Minimizing the intersection of the edges of the graph
9) python interface (desirable)
10) I am not satisfied with the spring mechanism for dynamically changing the coordinates of nodes
11) it is very desirable, but not necessary to unite the nodes into groups and place the nodes that belong to the same group as close as possible to each other.
12) the ability to output changes of the coordinates of nodes in the graph, which arise as a result of adding or removing nodes and edges
Built-in graph visualization is not necessary, I need the system which can calculate the coordinates of nodes of graph dynamically that is important when making changes (adding and removing nodes and edges of the graph)
There are a lot of technologies, but some don't work with dynamic graphs, others haven't the ability to bind nodes to the grid, others are based on the spring locating nodes mechanism.
Now I have to invent the mechanism myself, but the task is not simple. I'd like to hope that a package that can solve my problem already exists