netgraph and iplotx
Hi Paul,
My name is Fabio Zanini and I'm an Associate Professor at UNSW Sydney, Australia. This year I began developing iplotx:
https://github.com/fabilab/iplotx
which is similar in scope to your amazing netgraph. Tbh I only discovered netgraph today, otherwise I would have reached out sooner.
I wonder if you would like to somehow try to join forces and deliver an even better user experience for visualizing networks in Python. I can think of a few ways this could work, so from my end it would be quite interesting.
A few scattered thoughts that make me think there's potential for synergy here:
- netgraph seems like it includes a lot of node layouting and edge routing, which iplotx avoids on purpose.
- iplotx does a lot of tree-specific stuff including layouts, netgraph seems more focused on general networks
- iplotx can do 3d layouts (in a quirky way), netgraph seems more focused on 2d
- netgraph has bundled edges and other geometry things that are very nice and iplotx does not support
There are some things we both do like editability, animations, etc.
What do you think, maybe there is potential for some collaboration of sorts?
You can also reach me at fabio.zanini AT unsw.edu.au
Thank you, Fabio
Hi Fabio,
The ignorance was mutual, but I just had a browse through your repository's gallery. Man, those are some tasteful visualizations! And yes, I would love to join forces. Your drawings (the front-end?) are clearly prettier, whereas I may have spent a bit more time on implementing node layout and edge routing algorithms (the back-end?). It just makes sense.
That being said, I am completely swamped for the next few months: my wife and I just had another kid, we are moving house next month, and I have a major surgery coming up in the new year. At work, we are re-submitting a paper to one of the big two, so there is a lot of pressure to get everything done in a timely fashion. And last but not least, I am currently re-writing the bones of netgraph (the basic data structures, not any of the layout algorithms), and it will take a bit more work to get the newest version back into a working state.
Can we revisit this conversation in late January / early February? Life will be hopefully be a lot less hectic for me than it currently is. Then we can have a think about how to best meld together our two projects.
If, in the meantime, you want incorporate any of netgraph's code into iplotx, feel free to do so under any license terms you see fit.
Thanks for reaching out! Paul
Hi Paul,
Congratulations on the newborn! It can be really overwhelming so I get it.
Ok to discuss end of Jan. There's no rush from my end.
Re layouts, I have been an igraph core developer for a while and recently started a very experimental spinoff in Rust/Python to try and get as many layout algorithms from igraph/networkx/grandalf/etc into one place as possible:
https://github.com/fabilab/ilayoutx
I kind of consider this the layout companion of iplotx. It is just an experiment for now and does not do multi-component packing, edge routing, or anything like that, but it does have tentative implementations for many famous algos, mostly inspired by igraph.
My thinking until now has been maybe to split the layouting to a separate package from the viz, hence the ilayoutx/iplotx design. But I am happy to reconsider or chat about alternative approaches as well, none of this is written in stone.
I'll reach out with a ping end of Jan and we can take it from there, for now good luck with your many committment and hope all goes well.
Fabio
Thanks!
Re:
My thinking until now has been maybe to split the layouting to a separate package from the viz, hence the ilayoutx/iplotx design.
Usually I am the guy that advocates mode modular designs, but this is one of those cases, where I would strongly argue for a monolith. In my experience, there are a few issues that are very difficult / impossible to solve cleanly otherwise, for example: removing overlaps between node artists; edge routing around node artists; terminating edges at the border of non-circular nodes (important for drawing arrows correctly and properly displaying transparent node artists).
Yes, went through some of that, very fair. Let's reconnect when you are a bit more available and happy to discuss the options ☺️