Vega: A Visualization Grammar on top of D3
trifacta.github.com
trifacta.github.com
At first glance the purpose of this project is to make it easier for non-programmers to create visualizations. It's basically d3 without JavaScript, with the added ability to render the visualization using canvas instead of SVG.
When I look at the examples, I get confused. I know d3 and I expected to see less complexity, less manual layout setup, and less explicit data dependencies than I would see in the equivalent d3 code. The only thing that this seems to simplify is the declaration of the range of scales when they depend on the width or height of the canvas.
But maybe I was mistaken on first glance. Maybe the point is not to make it easy for non-programmers to create visualizations, but to make it easier for programs to make visualizations? JSON is easy to generate and to parse. JavaScript is neither.
jheer can you chime in here? Anybody?
In talks with journalism school instructors and others we've also learned that many novice programmers found models like Protovis easier for students to learn and use than D3, and JavaScript issues often dominated toolkit-specific issues. Our hope is that Vega proves simpler for a variety of tasks; that has certainly been our own experience so far.
That said, your post points out that the messaging on our website may be miscalibrated. We'll consider and revise appropriately.
For more about the specific motivations for Vega, read https://github.com/trifacta/vega/wiki/Vega-and-D3
Thanks for the feedback!
At the same time, If I'm writing a tool to do data vis (say in R, Haskell, Scale, etc), while I may want to leverage browser based rendering, I really really really have no interest in "compiling" my visuals to javascript code. My take on vega is it provides a nice "shim" so I can emit a visual which will be rendered to d3, without writing a mini javascript compiler.
tl;dr Vega (as they say in their documentation on the github wiki), is a data format layer that makes it easier for high level data vis tools to emit a format which is used to construct the D3 rendering.
Like most everyone here I think Vega would be much better suited to the role of an intermediate target format for higher-level tools.
I had heard Hadley Wickham talk about rendering ggplot2 graphics using d3 and am wondering if he'll be using this standard.
It allows creating plots using one chain of methods. And it's even possible to link several plots together, so interaction with one of them affects other.
Keep up the good work.