A Domain Specific Language for DataViz

Brunel is a high-level language that describes visualizations in terms of composable actions. It drives a visualization engine (D3) that performs the actual rendering and interactivity. Brunel makes it much easier to build fun and inventive visualizations that can be deployed rapidly on the web.

The core of Brunel is a service, written in Java and used either locally or via a web service, which generates Javascript code that can be used to show live visualizations on a web site. There are multiple ways you can use Brunel:

  • Using the online tools to create Javascript that you copy and use as you would any other D3 visualization.
  • Embedding a dynamic call to the service in your web application to generate and execute the Javascript for the visualization when the page loads
  • Using the Java Jar file to build your own application or service
  • Use the R and Python adapters within those languages, and especially within notebook applications like Jupyter

Core Features of Brunel

  • Automatically chooses good transforms, mappings, and formatting for your data
  • Allows multiple combinations of visualization “elements” — overlay points, bars, lines, paths, areas and text freely and in a coordinated space.
  • Handles building structures for D3 diagram like hierarchies, treemaps and chords
  • Handles data ranges, binning and stacking automatically
  • Automatically wraps and fits text, even when animating
  • Intelligently works out a good layout for the chart aspects, taking into account the data (so you don’t have to guess axis sizes, for example)
  • Provides flexible interactivity including tooltips, pan/zoom and interactive brushing
  • Coordinates multiple visualizations in the same space, including interactive brushing
  • Adds features such as Word clouds and paths with smoothly varying size
  • Data engine is in the Javascript code, so high-speed interactivity works with binning, aggregation and filtering

I want to use Brunel

Brunel is distributed under the, so it can be used freely.

Try it out live here

Get it at Github:, or check out more details on the Brunel Wiki