About dex.js

dex.js was primarily developed to provide visualization support for it’s parent project Dex. Dex is a much larger effort which provides a GUI for creating, transforming, outputting and visualizing data while dex.js provides some of the visualization capabilities and is a pretty solid offering in its own right.

Design Philosophy

dex.js is designed to provide a framework for the unification of a wide variety of different other javascript visualization frameworks in a way that allows for consistent usage and reuse; in particular for other tools such as Dex which require easily consumable visualization capabilities.

While it is not possible to hide and abstract away all the differences of the many disparate frameworks consumed by Dex, in general it does a pretty good job.

Consistency

All charts are expressed as consistently as possible. Underlying differences are, in general, handled by the charting framework itself.

Consistent Data

Each an every dex.js visualization expects a JSON form of CSV. This allows us to easily interchange charts and also allows them to communicate data changes to each other in a very consistent fashion.

Here is an example JSON/CSV representation:

var csv = {
  "header" : [ "NAME", "AGE", "GENDER"],
  "data" : [
    [ "Bob", 42, "Male"],
    [ "Alice", 25, "Female"]
  ]
};
Why CSV?

Configuration

The common aspects of charts are handled in a common way. For example, here is an example of two very different charts whose use is normalized when using dex.

var barchart = dex.charts.c3.BarChart({
  "parent" : "#BarChartParent",
  "csv" : csv
});

var pcChart = dex.charts.d3.ParallelCoordinates({
  "parent" : "#PCChartParent",
  "csv" : csv
});

Ease of use

Since all of the charts are expressed with a high degree of consistency, this translates into a much lower learning curve.

Data Driven

All charts can be created from generic JSON data specifications.

Embeddable

Charts are designed to be embeddable into other tools. Dex, for instance is a Java framework which is able to communicate back and forth with dex.js components.

Credits

This is my favorite part; giving credit to the myriad of folks who have influenced and inspired me.

They deserve credit where credit is due. Any omission is certainly inadvertant.