
D3 3.3 Released - mbostock
https://github.com/mbostock/d3/releases/tag/v3.3.0
======
javajosh
I find D3 to be frustrating because it promises so much and yet it's less of a
library and more of a "way to write JavaScript". There really isn't an
abstraction so much as a convention for calculating the 3 subsets of an
intersection and associating each subset with DOM elements, and then 'doing
something' with those DOM elements, possibly as a function of the associated
data item. Mike has created some amazing visualizations with D3, but for each
viz the code is fairly long and hairy. The worst thing though is that it's not
composable - or rather, the unit of composability is very low level. D3
doesn't have any helpers for data that changes over time, for example.

~~~
kmfrk
I run into A LOT of problems trying to make my own charts, but it also serves
to show in many cases that you can't abstract charting to account for all the
use cases, because there are so many distinct characteristics in every graphic
and dataset.

If you want a higher level of abstraction for d3, try Chartbuilder, which I
find doesn't cover anywhere near my use cases:
[https://github.com/Quartz/Chartbuilder](https://github.com/Quartz/Chartbuilder).

Another tool is Bret Victor's proof-of-content editor:
[http://worrydream.com/#!/DrawingDynamicVisualizationsTalk](http://worrydream.com/#!/DrawingDynamicVisualizationsTalk).

~~~
csmatt
Did he release a tool or source for what he uses in the video?

~~~
kmfrk

        I expect to write a full research report at some point 
        (at which I'll make the research prototype available as
        well).
    

[http://worrydream.com/DrawingDynamicVisualizationsTalkAddend...](http://worrydream.com/DrawingDynamicVisualizationsTalkAddendum/)

~~~
javajosh
Bret Victor is famous for tantalizing people with the future but not releasing
code :)

~~~
kmfrk
Yeah, I'm not holding my breath either. I think his prototypes are usually
just conceptual and not meant for use cases, which makes his talks a bit too
unfair and utopian for my taste.

------
mparr4
D3 is an absolute blast. I'm continually impressed by it's accessibility and
flexibility. If you've never played with it before it's an absolute joy to
work with.

Make sure to check out Mike Bostock's (d3's primary author) absurdly large
collection of examples:
[http://bl.ocks.org/mbostock](http://bl.ocks.org/mbostock)

~~~
car
I second this sentiment. Transform based zoom is a great new feature, now I
don't have to roll my own.

------
dljsjr
I've never had the opportunity to do much with D3 myself, but one of the
things that strikes me as really neat about D3 is that the data visualization
is aesthetically pleasing (use of colors, transparency, stroke weight, etc.).
I _love_ to just sit and look at D3 documents because I often find them to be
very soothing and enjoyable as visual elements, independent of the data being
presented.

Conversely, I very rarely see any demonstrations of non-Web
plotting/visualization tools (MATLAB, matplotlib, gnuplot, etc.) that look
nearly as nice.

What's the reason for this? Does D3 look that nice out of the box, or are D3
users/demonstrators just more interested in flipping the appropriate bits and
writing the code and doing the work to make sure that their data looks nice? I
ask because I'm about to start playing with a personal project that isn't web
based and that needs plotting. I'm seriously contemplating embedding a WebKit
panel and using D3 to render the graphics, but I haven't had the chance to
really invest a lot of time in studying plotting options. D3 has definitely
given the best first impression though.

~~~
kmfrk
Mike Bostock has a great design sensibility, but there is also some work
behind the scenes. It's a little like the LaTeX of charts that way.

Notice how the ticks look, which is dynamically handled, for instance. There's
some tweakage behind how many ticks to display, where to place ticks, and
other Tuftian goodness.

------
jws
What is D3?

 _D3.js is a JavaScript library for manipulating documents based on data. D3
helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web
standards gives you the full capabilities of modern browsers without tying
yourself to a proprietary framework, combining powerful visualization
components and a data-driven approach to DOM manipulation._

~~~
ibudiallo
I was completely lost without your comment. Thank you

~~~
groovy2shoes
I'm still completely lost. How is a "document based on data" different from
any other document?

~~~
mparr4
[http://mbostock.github.io/d3/tutorial/circle.html](http://mbostock.github.io/d3/tutorial/circle.html)

The above is an excellent example of both what d3 is AND how it works.

~~~
captaincrowbar
Seems to be broken on Chrome (Win7 x64). Clicking on any of the Run buttons
does nothing.

------
crm416
Highly recommend D3. I've used it for a large-scale project this summer,
handling thousands (millions, even) of data points in the browser. Mike
Bostock has created an immense body of examples and is constantly found
answering questions on SO, etc. Kudos to Mike and D3 as a whole.

EDIT: oops, typo

~~~
bunkat
His name is actually Mike Bostock, not Mark :)

------
danso
Not a D3 expert myself so hard to know how "big" each of the bullet points
are...but the interpolated zoom is pretty slick:
[http://bl.ocks.org/mbostock/6301817](http://bl.ocks.org/mbostock/6301817)

And custom geometry transforms: [https://github.com/mbostock/d3/wiki/Geo-
Streams#wiki-transfo...](https://github.com/mbostock/d3/wiki/Geo-Streams#wiki-
transform)

~~~
cscheid
The slickest part of that demo is the continuous level-of-detail rendering.
That's extremely helpful when scaling up to large maps.

------
aviswanathan
D3 is the reason I got into animation in the first place. The general ease-of-
use combined with the hackability of it is awesome.

------
sophacles
D3 is great - It has made a lot of things super easy to make pretty (mostly
pretty realtime front ends to research demos). I wish they would add some more
support for canvas drawing, but other than that, everything about it is just
slick.

~~~
npalli
What is your specific use case for using Canvas along with D3?

~~~
sophacles
Right now everything I want to do is capable of being done reasonably well in
SVG, however, there has been talk of effects that we wish to add that are
easier done in canvas.

We are doing a graph diagram using force directed layout, and are displaying
various overlays of paths through the graph based on input data parameters. As
I mentioned, this is currently all fine in SVG, however, we'd like to in the
future be able to make those overlays a bit more dynamic in the graphic sense
- by adding some effects that canvas makes easy. Also, our future drawing of
the graph will include enough custom shapes and images/sprites that the canvas
context + drawing objects will result in cleaner code than the equivalent SVG
operations.

Also, and this part is a personal bias, I just dislike SVG and it's DOM for
runtime graphics manipulation, and prefer the canvas API for it.

~~~
ph0rque
_We are doing a graph diagram using force directed layout..._

Can you provide a link to this?

~~~
sophacles
Sorry, can't - it's internal only right now. But the demo from the D3 page was
our starting point.

------
przemoc
A bit off-topic, but it bothers me (positively). How in GitHub you can provide
that kind of tag summary? Is it part of tag message? (There are even links, so
I doubt it.)

~~~
bullfight
This is a release, a relatively new github feature

[https://github.com/blog/1547-release-your-
software](https://github.com/blog/1547-release-your-software)

Check out the list of D3 releases
[https://github.com/mbostock/d3/releases/](https://github.com/mbostock/d3/releases/)

~~~
przemoc
Thanks, somehow I overlooked that.

> You can also attach binary assets (such as compiled executables, minified
> scripts, documentation) to a release.

Nice. I knew they didn't turn Downloads off for good (API still works, or at
least worked some time ago), but I didn't expect such move.

------
jbmartin
What's new in 3.3?

\- Brush transitions
[http://bl.ocks.org/mbostock/6216724](http://bl.ocks.org/mbostock/6216724)

\- Tools to help dynamic simplification (scale appropriate geometry on zoom):
[http://bl.ocks.org/mbostock/6252418](http://bl.ocks.org/mbostock/6252418)

\- Bug fixes

\- Others?

