So I’m considering going deep into a data viz library, and I’m wondering what you people think. I’m not asking reddit because I know for a fact that all the hardcore people that know their stuff are on lemmy.
Here are my requirements:
- API must at least pretend to be reasonably designed.
- I know that viz libraries are complex. But I want something with carefully chosen primitives that scale reasonably well from “data goes in, chart goes out” to nit-picky adjustments.
- Defaults must not be ugly.
- Or at least there should be an easy way to bypass the default ugliness. I know that design is subjective, but how am I supposed to trust a library that operates on the visual space and yet decides that a bad default is ok?
- Here looks like ggplot has the upper hand. But there is a stylesheet that makes matplotlib look like ggplot, so maybe that’s not a big problem.
- Must have a future.
- The github contribution chart on matplotlib just keep going up, it’s insane. While ggplot not so much. But maybe it’s hard to compete with the python hype machine, and that is that.
- Bonus points if interactive and renders to web too.
Non-requirements:
- Easy learning curve.
- I am a hardcore programm0r. I like it rough, as long as it’s worth the effort.
- Heavy math stuff.
- I’m not designing rockets or wind turbines. I just want a way to visually represent data as lines, charts, pies, or maps, or maybe violins if I’m feeling fancy.
Thanks
For the types of visualizations you’re describing, the choice probably won’t matter. I view matplotlib as “matlab flavor” and ggplot2 as “R flavor”. For R-type work (a certain type of table-based stats) I just use R.
For matlab type work (image processing, simulations, etc) I now use matplotlib. This is mostly numpy/scipy things rather than… pandas things. Python is interesting because it has things that are beyond matplotlib (VTK, etc) and beyond matlab. Typically when you’re prototyping in matlab you’re assuming you will have to rewrite in a different system eventually, but with python you can move the prototype further down to more polished prototype easily.
I do a lot of image processing and am too familiar with matlab, so matplotlib generally came naturally for translating that prior knowledge. So really it depends on what sorts of things you are familiar with, languages you use, and would want to do in the future. I think with either choice you will eventually hit some wall of difficulty.
There are also more visualization and plot focused things (TeX family or PostScript and PDF) as well as the “processing” language.
I use R for… not-image-type analysis stats and generate plots in R using R’s plotting. I mostly use python for matlab-type things and matplotlib seems more natural for that.
Julia is on my todo-list and I have heard good things about their plotting ecosystem but I have not looked into it.
Incidentally VTK is extremely well designed for the type of language it’s based on and the problems its solving… but that’s not really 2D plotting.