Develop simple open source graph visualization library

Will prefer offers for payment upon completion, but can pay up to half up front.

The task is to write an open source library for visualization of directed graphs in Julia. See GitHub - JuliaGraphs/GraphPlot.jl: Graph visualization for Julia. for an initial direction, but that one has a lot of issues including poor code quality. The basic version should simply graph based on a set of (node one, edge, node two) triples and then support visualizing LightGraphs.jl.

It should support self-edges, include labels for nodes and edges as well as avoid overlap. The interface should be consistent with Plots.jl.

Please submit your offers to juliagraph@i.keorn.org or ask questions here.

8 Likes

For whoever might undertake this, there’s some cool research on using graph modular decomposition to visualize the structure of graphs:

The main issue is the complexity and difficulty of implementing graph modular decomposition. However, I implemented that already (thought it would be useful for something I was working on but it turned out not to be), and the code is here:

https://github.com/StefanKarpinski/GraphModularDecomposition.jl

It even supports decomposition of directed graphs, which is fairly fancy (took me forever to get right). The main issue with this code is that it works on a matrix representation of a graph rather than any of the LightGraphs data structures. I’m sure it would be straightforward to port it to use the LightGraphs API instead.

5 Likes

I’d strongly suggest taking a look at GitHub - JuliaPlots/GraphRecipes.jl: Graph-related recipes to be used with Plots.jl before duplicating work. That repository has been rather undermaintained lately, but it should be a relatively simple effort for someone dedicated to brush it up to the standard as requested here. It is already compatible with LightGraphs. @Diego_Javier_Zea has the push rights to the repo, and recently updated it to Julia 1.0 compatibility.

The JuliaPlots organisation might be willing to hand over the GraphRecipes repo to you if you’d employ a person to bring it forward into a new and brighter future.

For completeness, there’s also some layouts and things in GitHub - EcoJulia/EcologicalNetworksPlots.jl: Networks. Boil 'em mash 'em stick 'em in a stew. And now, plot 'em.

4 Likes

Thank you for the excellent pointers.

There is also a related package to LightGraphs, MetaGraphs which could hold node and edge labels. But that one requires some work on a less imperative interface.

GraphRecipes would be indeed a good base, it would need to gain ability to have directed graphs, self-edges and edge labels.

I do not mind if the repo remains under JuliaPlots org as long as maintainer is reasonable and active.

2 Likes

Currently out of promising offers the best one is for 1750 EUR.

I will let anyone else interested to submit their offer to do so within the next 3 days.

2 Likes

Thanks to everyone who has expressed interest. The selection has now been made and the work should be done over the coming month, will post an update.

2 Likes

You follow the work by looking at PRs from the last month or so: GitHub - JuliaPlots/GraphRecipes.jl: Graph-related recipes to be used with Plots.jl

2 Likes

Nice… esp. the tree view of Julia Code :wink:

1 Like

The project is done for now, all items in the original post are completed.

@asprionj indeed that is one of the motivations, visuals can be often much easier to parse so I hope graphs get used more widely.

5 Likes