# Develop simple open source graph visualization library

**URL:** <https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607>\
**Category:** Jobs\
**Tags:** plotting, graphs\
**Created:** [May 25, 2019, 4:47pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607 "2019-05-25T16:47:17Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [May 25, 2019, 4:47pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/1 "2019-05-25T16:47:17Z")

</div>

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.](https://github.com/JuliaGraphs/GraphPlot.jl) 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](mailto:juliagraph@i.keorn.org) or ask questions here.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [May 25, 2019, 5:08pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/2 "2019-05-25T17:08:12Z")

</div>

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

> **[PapadopoulosVoglis2007.11.2.pdf](https://jgaa.info/accepted/2007/PapadopoulosVoglis2007.11.2.pdf)**
>
> 503.92 KB

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](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.

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [May 25, 2019, 6:46pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/3 "2019-05-25T18:46:01Z")

</div>

I’d strongly suggest taking a look at [GitHub - JuliaPlots/GraphRecipes.jl: Graph-related recipes to be used with Plots.jl](https://github.com/JuliaPlots/GraphRecipes.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.](https://github.com/PoisotLab/EcologicalNetworksPlots.jl)

---

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [May 26, 2019, 12:56pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/4 "2019-05-26T12:56:06Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [May 31, 2019, 7:17am UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/5 "2019-05-31T07:17:20Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [June 5, 2019, 7:08pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/6 "2019-06-05T19:08:04Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [July 9, 2019, 7:50am UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/7 "2019-07-09T07:50:52Z")

</div>

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](https://github.com/JuliaPlots/GraphRecipes.jl)

---

<div class="post-metadata">

**Author:** ![asprionj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asprionj/32/6856_2.png) [@asprionj](https://discourse.julialang.org/u/asprionj)\
**Post date:** [July 12, 2019, 8:38pm UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/8 "2019-07-12T20:38:22Z")

</div>

Nice… esp. the tree view of Julia Code 😉

---

<div class="post-metadata">

**Author:** ![keorn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keorn/32/8761_2.png) [@keorn](https://discourse.julialang.org/u/keorn)\
**Post date:** [July 24, 2019, 9:11am UTC](https://discourse.julialang.org/t/develop-simple-open-source-graph-visualization-library/24607/9 "2019-07-24T09:11:55Z")

</div>

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.
