1. circles.enter().append("circle").attr("class", "update")
2. there's no update method, just set attributes or append
2.1. circles.attr("class", "update")
3. set attributes by data
3.1. circles = svg.selectAll("circle").data(data)
4. circles.attr("r", function(d) { return d.radius; });
5. data joins
5.1. marrying data to the DOM
5.1.1. *read*
5.1.1.1. http:/bost.ocks.org/mike/join/
5.2. mapping by
5.2.1. enter
5.2.1.1. exists in data but not in DOM
5.2.1.2. need use enter().append()
5.2.2. update
5.2.2.1. exists in both
5.2.3. enter+update
5.2.4. exit
5.3. you have a method (eg, renderData) that does these 4 steps
6. exists in DOM but not in data
7. load & manipulate data in different formats
7.1. asdasd
8. multi-dimensional
9. hello
10. world
11. jsnkjdcnsdc
12. asdasda
13. dasdasd
14. asdadasd
14.1. jkfnvjnvdfv
14.1.1. njnkjnkn
14.1.1.1. kjnjn
14.1.1.1.1. kjnkjn
15. dasdasd
16. hghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgggggggggh
17. 1. visualization
18. animations
18.1. e.g.
19. because you declare the join & handling of adding/removing data, you can easily add animations
20. you describe DOM elements that d3 will create according to the data
21. visualisations can increase or decrease the value extracted from data
22. enter
22.1. fade in
23. the 1st that's really a *visualisation* framework
24. drawing
24.1. RaphaëlJS
24.2. processing
24.2.1. drawing code
24.2.2. a JS version supports running in browser
24.3. flash
25. no loop over data
25.1. rather
25.1.1. declarative mapping of DOM elements to data
26. svg.selectAll("circle").data(data).enter().append("circle").attr("r", 2.5);
27. a
27.1. a
28. definition
28.1. vis tells a story made of data
28.2. conveys a value contained in the data
29. test
29.1. d3
29.1.1. does a lot for you
29.1.1.1. map data unto the DOM
29.1.1.2. interpolation
29.1.1.2.1. map properties unto scales of
29.1.1.3. scales
29.1.1.3.1. linear
29.1.1.3.2. nice
29.1.1.4. colorspace math
29.1.1.4.1. natural = d3.extend(data);
29.1.1.4.2. colorscale = d3.scale.linear().domain(natural).intpolate(d3.interpoleateLab).range(startColor, endColor);
29.1.2. example
29.1.2.1. http://bl.ocks.org/3808218
29.1.3. outputs SVG
29.1.3.1. מה לעשות,ינינחינ
29.1.3.2. works with high-res (retina) DPI
29.1.3.3. use as image in HTML & CSS
29.1.3.4. manipulate style via CSS
29.1.3.5. selectors in JavaScript, e.g., by class
29.1.3.5.1. getElementByClassName
29.1.3.6. d3 selectors are almost the same as jquery's
29.1.3.6.1. d3.selectAll(...)
29.1.4. attributes aren't exactly the same as HTML
29.1.5. mostly, it just works
29.1.6. it's just javascript
29.1.7. you can use the browser debugger