Anyway, this seems cool.
Anyway, this seems cool.
How is this an addendum, rather than the main point? I will always take a flexible library that allows me to "get the job done" over a declarative framework that will do something similar to—but not exactly—what I need.
GGplot2 is _very_ nice to use and an incredible library...as long as you want to do something the package author approves of. Want to change some behavior about how bins are generated because the default behavior lies? Too bad.
Matplotlib is ugly, but it doesn't make decisions for you, and once you understand it, you can do anything with it.
Every time I use matplotlib, I have to look up how to remove the border on my graph, make things slightly transparent, etc. The default colour palette isn't colourblind friendly, so the other day I spent half an hour trying to set up a more accessible one. I had to create / fetch 3 objects, their names being something like ScalarMap, Normalize and cmap. Why do I need to understand the relationship between these 3 objects when all I want to do is switch from one palette to another?
Meanwhile, it's so flexible as to be annoying for a non-expert. I often encounter matplotlib answers on StackOverflow about things that I would expect to "just work", but that actually require 20 lines of code to solve, written by someone who appears to be deeply familiar with the internals of the library.
Note: I'm not saying that a declarative approach solves these things.
Matplotlib makes everything complex.
And it gets worse because it gets new APIs with almost identical names to the previous ones, without a proper guide for when to chose which API.
And yes it's just so ugly by default.