Protovis: http://vis.stanford.edu/protovis/
DyGraphs: http://dygraphs.com/
Google charts: http://code.google.com/apis/chart/
Infovis: http://thejit.org/
Flot: https://code.google.com/p/flot/
HighCharts: http://www.highcharts.com/
Dejavis: http://dejavis.org/
Graphael: http://g.raphaeljs.com/
JSXGraph: http://jsxgraph.uni-bayreuth.de/wiki/index.php/Main_Page
Of course, lots of people talk about the flash based tool �flare�:
http://flare.prefuse.org/
This is a good reference for real time graphing tools:
http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/
D3 is the fastest and most flexible of the browser based solutions of
tried so far.
--
Rick Otten
rot...@windfish.net
O=='=+
1. Pixel vs. vector.
Processing, like HMTL5 Canvas, is a pixel-based graphics library. D3,
assuming you are using SVG, is vector-based. Depending on the type of
application you are building, one may be more appropriate.
For example, certain graphical effects such as motion blur and glow
are easier to do with pixel-based graphics, because you can composite
multiple frames or apply convolutions. It's possible to do this in SVG
using filters, but pixel-based access offers a lot of flexibility. On
the other hand, vector-based graphics offer advantages as well, such
as the ability to scale the graphic up to arbitrary sizes. You can
print SVG to PDF to embed it in other documents, or simply increase
the size of the SVG and the graphic will resize automatically.
2. Immediate vs. retained.
Related to #1, Processing draws directly to a pixel buffer. After
you've drawn things, all you have left is a pixel buffer. In contrast,
a retained-mode system maintains a scenegraph of visible elements.
This offers some significant advantages in terms of ease-of-use: you
can manipulate the scenegraph and the display will automatically
update, rather than needing to maintain dirty regions and redraw
explicitly. This also means you may get better performance, because
the browser can optimize the redraw; although, the scenegraph can
introduce overhead on its own, so it depends.
And, as with animation, it's easier to add interaction to a
scenegraph. With HTML5 Canvas, you have to do hit testing manually
using pointInPath; with SVG you merely need to bind event listeners as
you do with HTML. You can even use CSS :hover, anchor tags, and other
techniques for simple interaction.
3. Proprietary vs. standard.
Processing is a beautiful and simple API. But it's not as prevalent as
HTML. D3 builds on standard HTML, which means you can inspect that
output using browser developer tools. It also integrates with other
technologies—for example, you can style D3 (either HTML or SVG) using
external stylesheets. You can even use CSS3 animations. Likewise, you
can generate some of your HTML on the server, and then use D3 to
transform it on the client. Processing, in contrast, is a closed
system.
4. Imperative vs. declarative.
Processing is, in essence, a C (or C++) -style programming language
using functions and for loops. This is generally called "imperative"
programming because each statement has side-effects. D3 isn't strictly
declarative like CSS, but it eliminates most of the control flow you
typically need. For example, you can bind data to a set of elements
and transform them without ever writing a for loop or mapping data to
elements.
5. All the extras…
Both libraries offer an assortment of add-ons that you may find
useful! For example, I am a big fan of toxiclibs:
Likewise, D3 has various shapes, scales, layouts and charts that can
simplify your visualizations.
Mike
I should have some time this weekend to work on API reference
documentation. I agree it's sorely needed!
Mike
I welcome contributions and pull requests! Jason Davies in particular
has been instrumental in contributing a ton of awesome new features,
including some that we haven't yet pushed to the website, such as
histograms, q-q plots, and polylinear scales (one of the most-loved
features from Protovis). My Protovis compatriots Jeff Heer and Vadim
Ogievetsky are also active "behind the scenes", such as the recent
addition of cubic monotone interpolation. And I expect we'll see
contributions from my coworkers at Square in the coming months.
> Right now D3 is alone in several areas (you know this very well) and it
> would be nice to see it developed further so that we don't see the Protovis
> discontinued story repeated.
Protovis was only "discontinued" in the sense that it grew into D3. If
D3 grows into something even more awesome in the future, then the
future will be very bright indeed. ;)
> also please add a space where people will provide links to their d3 projects
> and improve the gallery for the future.
Good idea. We have this already:
http://mbostock.github.com/d3/ex/#user_gallery
And I just enabled the wiki on GitHub, so you can anyone can add links here:
https://github.com/mbostock/d3/wiki
Mike