I feel like a lot of attempts to recreate ggplot2 end up being superficial because they don't recognize / duplicate the power of the underlying Grid graphics that ggplot2 uses.<p>I know that web technologies are all the rage these days, but at least for static, publication-ready graphics, Grid is really nice substrate, with well thought out lower-level abstractions.<p>EDIT: I should also add that it's documented within an inch of its life should anyone feel that it's worth recreating: <a href="https://stat.ethz.ch/R-manual/R-devel/library/grid/html/grid-package.html" rel="nofollow">https://stat.ethz.ch/R-manual/R-devel/library/grid/html/grid...</a>
Surprise to see this at the top, I am the creator* of plotnine. The most common question seems to be, what to expect of plotnine? The answer; a high quality implementation of a grammar of graphics with an API that closely matches ggplot2, and more.<p>I also want other packages to be able to build off of plotnine, e.g. a package with the functionality of Seaborn could be built off of plotnine. The only constraint should be whether the backend -- in this case Matplotlib -- does stand in the way. Matplotlib is evolving (though slowly) and has a very receptive community so there is lots of hope.<p>* - Many people contributed to its history.
Recreating and keeping up with Hadley's hard work is challenging, particularly because ggplot2's layout and extensions are really nice and continue to evolve.<p>As an alternative that preserves the full power of Wickham's implementation, pygg[1] is a Python wrapper that provides R's ggplot2 syntax in Python and runs everything in R.<p>[1] <a href="https://github.com/sirrice/pygg" rel="nofollow">https://github.com/sirrice/pygg</a>
Another grammar of graphics: altair[1]. The altair are simpler and easier to read, i.e.<p><pre><code> Chart(df).mark_point().encode(
x='age', y='height', color='sex')
</code></pre>
Also, see Jake Vaderplas's talk on an overview of Python visualization tools at <a href="https://youtube.com/watch?v=FytuB8nFHPQ" rel="nofollow">https://youtube.com/watch?v=FytuB8nFHPQ</a><p>[1]:<a href="https://altair-viz.github.io" rel="nofollow">https://altair-viz.github.io</a>
If this is an implementation of ggplot2, what does it offer over <a href="http://ggplot.yhathq.com/" rel="nofollow">http://ggplot.yhathq.com/</a>?<p>I don't mean to undermine your project, just wanted to know about significant differences.
What is meant by "a grammar"?<p>Is it the way we concatenate functions to create what's essentially a sentence of what we want the plot to be?
This is nice and all, but the syntax and names are totally unintuitive.<p>If I'm to dig in the manual, I might as well build my plots with the standard syntax of any random plotting library.<p>Is this "grammar of graphics" any good if you invest more time in it?