hvega: Create Vega-Lite visualizations (version 3) in Haskell.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

This is based on the elm-vegalite package (http://package.elm-lang.org/packages/gicentre/elm-vegalite/latest) by Jo Wood of the giCentre at the City University of London.


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.0.1, 0.1.0.3, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.3.0.1, 0.4.0.0, 0.4.1.0, 0.4.1.1, 0.4.1.1
Change logCHANGELOG.md
Dependenciesaeson (>=0.11 && <1.5), aeson-pretty (==0.8.*), base (>=4.9 && <5), bytestring, directory, filepath, hvega, text (==1.2.*), unordered-containers (==0.2.*), vector (>=0.11 && <0.13) [details]
LicenseBSD-3-Clause
Copyright2018-2019 Douglas Burke
AuthorDouglas Burke
Maintainerdburke.gw@gmail.com
CategoryGraphics
Home pagehttps://github.com/DougBurke/hvega
Bug trackerhttps://github.com/DougBurke/hvega/issues
Source repositoryhead: git clone https://github.com/DougBurke/hvega
Executablesplaytutorial
UploadedSun Sep 29 17:14:02 UTC 2019 by DouglasBurke

Modules

[Index]

Flags

NameDescriptionDefaultType
tools

Build associated tools (in general you won't need this)

DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for hvega-0.4.1.1

[back to package description]

hvega

Create Vega-Lite visualizations in Haskell. It targets version 3 of the Vega-Lite specification. Note that the module does not include a viewer for these visualizations (which are JSON files), but does provide several helper functions, such as toHtmlFile, which create HTML that can be viewed with a browser to display the visualization. Other approaches include automatic display in IHaskell notebooks - with the ihaskell-vega package - or use of external viewers such as Vega View and Vega-Desktop.

It is based on an early version (2.2.1) of the Elm Vega library, which is released under a BSD3 license by Jo Wood of the giCentre at the City University of London.

This code is released under the BSD3 license.

Example

let cars =  dataFromUrl "https://vega.github.io/vega-datasets/data/cars.json" []

    enc = encoding
            . position X [ PName "Horsepower", PmType Quantitative ]
            . position Y [ PName "Miles_per_Gallon", PmType Quantitative ]
            . color [ MName "Origin", MmType Nominal ]

    bkg = background "rgba(0, 0, 0, 0.05)"

in toVegaLite [ bkg, cars, mark Circle [], enc [] ]

When viewed with a Vega-Lite aware viewer, the resultant plot is

Simple scatterplot

Documentation

A tutorial is provided as part of the module: it is based, as is so much of the module, on the Elm Vega walk through. The tutorial is available on hackage - and includes the plot outputs - and the plots it creates are also available by importing the Graphics.Vega.Tutorials.VegaLite module.

The Vega-Lite Example Gallery has been converted to an IHaskell notebook Uunfortunately the plots created by VegaEmbed do not always appear in the notebook when viewed with either GitHub's viewer or ipynb viewer, but things seem much better when using Jupyter Lab (rather than notebook) to create the notebooks (since Vega is natively supported in this environment). The notebooks have been re-created using Jupyter Lab (thanks to Tweag I/O's JupyterWith environment), which should make the plots appear on GitHub (you may need to reload the notebooks as I find they don't display on the first try).

The notebooks directory contains a poorly-curated set of examples and experiments with hvega.

Differences to Elm Vega

Elm Vega has changed significantly since I started hvega, and no-longer exposes data types directly but uses functions instead: for example, rather than PName, it uses a function like pName. It is an open question whether hvega will make the same switch. Over time the naming of certain operations or data types has diverged between hevga and Elm Vega.

One of the more-obvious changes is that the output of toVegaLite is a separate type from the input values - that is VegaLite and VLSpec - since it makes it easier to display the output of hvega in IHaskell. The JSON specification is retrieved from this type with fromVL.