brucala / Deneb.jl

Julia API for creating Vega-Lite visualizations
https://brucala.github.io/Deneb.jl/dev/
BSD 3-Clause "New" or "Revised" License
21 stars 1 forks source link
altair charts interactive-visualizations julia-language plots plotting vega-lite visual-analysis visualization visualization-grammar

Deneb.jl

Deneb.jl logo [![Tests](https://github.com/brucala/Deneb.jl/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/brucala/Deneb.jl/actions/workflows/test.yml?branch=main) [![Docs](https://img.shields.io/badge/docs-dev-blue.svg)](https://brucala.github.io/Deneb.jl/dev/) [![Coverage](https://codecov.io/gh/brucala/Deneb.jl/branch/main/graph/badge.svg)](https://app.codecov.io/gh/brucala/Deneb.jl/tree/main)

Deneb is the brightest star in the constellation of the Cygnus, and together with Vega and Altair they form the Summer Triangle asterism.

Deneb.jl is a convenient Julia API for creating Vega-Lite visualizations, with high inspiration from Python's Vega-Altair.

Quickstart

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
)

See the Gallery for more examples.

Why Deneb.jl?

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

VegaLite.jl allows for the creation of virtually any possible Vega-Lite specification in an elegant manner. However, its strategy for composing plots can be somewhat confusing and obscure (refer to this VegaLite.jl issue for more details). In response to this, I proposed an alternative composition strategy in this PR. This, along with an excuse to start a personal project to further explore the Julia language, served as the main motivation to start creating Deneb.jl.

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.

Below a list of good and not-so-good things about Deneb.jl: