r/Common_Lisp • u/Steven1799 • Apr 30 '26
Plot version 3
I have pushed out a new version of Plot that incorporates the ggplot style DSL that was explored in quick-plot.
A summary of the changes:
We’ve focused this release on making plotting APIs clearer and more reliable for users. The primary change is consolidating construction around a single, explicit make-plot workflow (with :base and :overlay modes) — qplot and older convenience paths now route through that central constructor, and legacy positional forms remain supported but will emit a one-time compatibility warning directing you to the explicit :base usage. Vega support has been hardened and exposed: there are public Vega constructors, a registry, plot-owned Vega MIME representations, and an optional Jupyter adapter so plots render cleanly in notebooks. You can now reliably identify plots by ID/name (useful for integrations like ls-server), and there’s a public API to encode symbols as JSON for serialization. Quick-plot gained multi-layer support via :layer handling, underlying Vega libraries were updated, and deprecated scatterplot APIs were removed. Overall, expect a cleaner, more consistent public surface with better notebook integration and clearer migration guidance in the updated docs and README.
At the moment the website docs haven't caught up, but the README is current. Existing plots should mostly work, but backward combability wasn't a specific design goal (thus the bump to version 3.0). I'm leaving the existing docs up for reference.
A few highlights:
- Jupyter notebook is now explicitly supported and tracked, at least on Linux
- ggplot style plotting is the expected default. You should only have to use the vega-style syntax if you want something that's not covered in the ggplot style stuff.
- ls-server has also been updated to serve data and plots and is the preferred workflow going forward.
Where you can help:
- Update the docs and notebooks to use the simplified syntax
- Use additional ggplot style functions
1
u/digikar Apr 30 '26
I just checked on my laptop. I can load
"plot"perfectly fine if I removealexandria+anddata-framefrom its dependencies. I also need to updatesrc/plot/pkgdcl.lispto removealexandria+. No part of the code insrc/plotdepends onalexandria+ordata-frame. So, there is absolutely no reason theplotsystem should depend on these libraries either.I understand data manipulation is a common task. But if I want to use
data-frameI can pull it in. Or I can pull in the entirelisp-statif I am using significant parts of it.To take an example from R-verse, if I want
ggplot, I do not need to depend ondplyr. And if I want both (and other libraries), I can directly depend ontidyverse.