Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
declarative vis in js/coffeescript
JavaScript CoffeeScript Other
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
docs
lib
src
test
vendor
.gitignore
.gitmodules
Cakefile
HACKING.md
LICENSE
README.md
package.json
toaster.coffee

README.md

gg

Javascript DSL for Grammar of Graphics extended to support interactivity and backend data-processing support. Written in coffeescript

See notes for implementation/commit notes.

See the website for some more examples.

Setup

Install node

brew install node

Install gg

npm install

Install coffeescrip

---

Compile

cake build
cake release

Current Implementation

Screenshot!

Related Technologies

  • ggplot2 (+ shiny?)
  • ggobi
  • tableau
  • protovis
  • perfuse
  • cranvas

TODO

XForms

  • Ues a consistent spec for an xform (layers also use this)

    { type: STRING aes: { [aesthetic: MAPPING SPEC]* // [group: MAPPING SPEC] // precede computation with split, follow with join/label } [param: [STRING | NUMBER | OBJECT | FUNCTION]]* }

  • Support asynchronous operators (send to thread, send to REST API)

  • Support data/table spec option
    • what should the API be?
  • support params/args in xforms -> add @param() to xform method list
  • Support grouping and propogating mapped discrete aesthetics down the workflow
  • allow aesthetics aliases color: "attr2" actually compiles to fill: "attr2" stroke: "attr2"

Workflow

  • support

Scales

  • use provenance data to decide the "correct" scales to use for a table column
  • allow position scales to use same units/pixel

Coordinate System

  • Coordinate systems (esp. pie charts)

Rendering

  • draw facet labels after geometries

Misc

  • remove nested arrays from tables, and support partition by clauses in xform operators
  • name the phases and the operators more consistently and predictably
  • documentation
  • Regularize/rationalize/document use of CSS for controlling appearence.
  • In-browser interactive graphic builder. (REPL?)

Provenance

  • add provenance system

Tables

  • figure out sane semantics for table mapping if a nested value is mapped

DONE!

  • support detecting scales types (color scales esp)
  • FIX COORD SWAP, AND CONSOLIDATE TABLE COLUMNS ONTO SINGLE SCALE OBJECT, TYPED SCHEMAS?
  • support tables as columns (blocker for line charts).
  • add types to tables
  • allocate panes after computing the a[x]s tick size of y a[x]s to know how much spacing to give
  • allow aesthetics with dashes in name (e.g., fill-opacity) in evaled JS scripts -> currently var fill-opacity = row['fill-opacity']
  • render bars
  • in aesthetic mappings, differentiate evaled e[x]ressions and string constants -> evaled e[x]ressions are of form: "{ JAVASCRIPT }" string values are ""
  • fix instantiating barriers
  • fixed problem where scales.scale('[x]) returns same gg.scale for all layers
  • make stats work
  • make positioning work
  • make sure retraining scales after positioning works -> facets set position range in allocatePanes. need to make sure if ranges are set that they will be used in future. -> stop overwriting e[x]sting scales objects?

Acknowledgements

Something went wrong with that request. Please try again.