[ANN] Deneb.jl

I’m happy to announce Deneb.jl, a convenient Julia API for creating Vega-Lite visualizations.

I began developing this package nearly two years ago, mainly as a personal project to deepen my understanding of Julia. However, I eventually lost track of it. Recently, I decided to revive the project and noticed that it is in a decent shape to be shared.

With Deneb.jl one can create Vega-Lite visualizations in the following way:

using Deneb
cars = "https://vega.github.io/vega-datasets/data/cars.json"
Data(url=cars) * Mark(:point) * Encoding(
    "Horsepower:q",
    "Miles_per_Gallon:q",
    color=:Origin
)

scatter_plot

See the Gallery for more examples.

Registration of Deneb.jl in the General registry was requested today.

Why another wrapper to Vega-Lite?

The excellent VegaLite.jl package already exists in the Julia ecosystem. So, why create yet another package to accomplish the same thing?

As an enthusiast of Julia and a Vega-Lite/Altair, I was really pleased to discover VegaLite.jl in the Julia ecosystem. However, I found its plot composition strategy to be somewhat confusing and unclear (refer to this VegaLite.jl issue for more details). In response to this, I suggested an alternative composition strategy in this PR. This was the spark for me to start Deneb.jl, primarly as a personal learning exercise.

Caveat

Deneb.jl is not intended as a replacement for VegaLite.jl. VegaLite.jl benefits from the attention of numerous contributors with vast experience in creating and maintaining Julia packages. In contrast, I am simply a Julia and Vega-Lite enthusiast with limited time to explore Julia’s capabilities in my free time. However, if Deneb.jl attracts some interest, I’m willing to continue improving its documentation and other aspects of the package. Of course, contributions from others are always welcome.

16 Likes

Great, thanks for making this!
I’ve been using Altair through PyCall.jl to make vegalite plots. Thanks to PyCall, everything works fine without issues, but a native julia solution like this has the opportunity to be cleaner and more seamlessly integrated.

1 Like

@aplavin Deneb.jl is now in the general registry. If you decide to give it a try, any kind of feedback will be appreciated.

One might be tempted to complain about the plethora of packages addressing the same or closely related topics in Julia. The multiplicity may disorient the beginner who yearns for one way to do things. Give it time, and one may gradually come to appreciate the richness of the language ecosystem. Deneb is an example. After exploring the Gadfly, VegaLite, Plots, Gnuplot and Makie julia packages to various degrees, I’m settling on Makie for long-term learning. Yet having poked at using Deneb for quick plots on a recent dataset, I’m pleasantly surprised at how quickly and easily one can generate good looking exploratory plots with this package. The documentation still needs expansion but the author provides an extensive gallery of helpful worked examples. I welcome the addition to the Julia plotting landscape. Thank you, @brucala!

4 Likes