603d86a | Mike Bostock | 01 May 2011, 16:58:46 UTC | Compute node position relative to parent. Previously, we were computing the node position relative to the node, which is dangerous is the node is transformed. Computing it relative to the parent allows nodes to be positioned using the "transform" attribute. | 01 May 2011, 16:58:46 UTC |
f76e515 | Mike Bostock | 01 May 2011, 04:18:52 UTC | Merge branch 'jasondavies-qq' * jasondavies-qq: Improvements to qq chart. Add x- and y-scales to Q-Q plot. Add Q-Q plot. | 01 May 2011, 04:18:52 UTC |
71622b7 | Mike Bostock | 01 May 2011, 04:16:58 UTC | Improvements to qq chart. | 01 May 2011, 04:16:58 UTC |
1eaff45 | Mike Bostock | 30 April 2011, 23:50:45 UTC | Merge branch 'jasondavies-spline-editor' * jasondavies-spline-editor: Minor improvements to spline example. Simplify path handling. Bind mouse event handlers to window. Move spline editor to standalone directory. Add spline editor example. | 30 April 2011, 23:50:45 UTC |
5069739 | Mike Bostock | 30 April 2011, 23:47:38 UTC | Minor improvements to spline example. | 30 April 2011, 23:47:38 UTC |
7c1530f | Mike Bostock | 30 April 2011, 22:58:56 UTC | Merge branch 'jasondavies-sort' * jasondavies-sort: Sort example improvements. Add parallel option to merge sort example. Add animated merge sort example. | 30 April 2011, 22:58:56 UTC |
a92535c | Mike Bostock | 30 April 2011, 22:56:03 UTC | Sort example improvements. Simplify the implementation of parallel merge-sort, so that we have one pass per swap across chunks. Use a data join so that the elements are translated rather than rotated, since this better conveys the underlying sort. Auto-play the animation in parallel, and restart a few seconds after it finishes. | 30 April 2011, 22:56:03 UTC |
93ac0c0 | Mike Bostock | 30 April 2011, 20:19:28 UTC | Add pixelbreaker link. | 30 April 2011, 20:19:28 UTC |
c293fde | Mike Bostock | 30 April 2011, 20:13:51 UTC | Prettify clock example. | 30 April 2011, 20:13:51 UTC |
392bcab | Jason Davies | 29 April 2011, 16:14:44 UTC | Add polar clock example. | 29 April 2011, 23:19:42 UTC |
f049cb0 | Jason Davies | 29 April 2011, 15:09:56 UTC | Add parallel option to merge sort example. This simply shows the merges happening in parallel. | 29 April 2011, 15:09:56 UTC |
249c4f2 | Jason Davies | 29 April 2011, 14:14:55 UTC | Add animated merge sort example. Inspired by the phrase "reminiscent of wind gusting over tall grasses" in <http://vis.stanford.edu/protovis/ex/sort.html>. It seemed abominable not to animate the swaying tall grasses! | 29 April 2011, 14:14:55 UTC |
1c25460 | Jason Davies | 29 April 2011, 09:14:15 UTC | Simplify path handling. There will always be a single <path> element, so no need to handle enter, update and exit cases. WebKit seems to erroneously warn (in the error console) that it can't parse `d=""`. I can't see anything in the SVG spec disallowing an empty `d` attribute so I think this is safe to ignore. | 29 April 2011, 09:14:15 UTC |
3e72f75 | Jason Davies | 29 April 2011, 09:02:28 UTC | Bind mouse event handlers to window. This produces much nicer behaviour when the mouse dragged outside the <svg>'s area. Thanks, Mike! | 29 April 2011, 09:02:28 UTC |
0679598 | Mike Bostock | 28 April 2011, 18:43:26 UTC | Better jittering for coincident nodes. | 28 April 2011, 18:43:26 UTC |
51b8e02 | Mike Bostock | 28 April 2011, 17:23:04 UTC | Simplify force calculations. We don't actually need the separate `fx` and `fy` attributes on each node; instead we can modify the `x` and `y` attributes directly, since we're using position Verlet! This commit also adds the layout's `alpha` parameter to the tick event, such that normalized external forces can be applied. | 28 April 2011, 17:25:23 UTC |
ee30e29 | Mike Bostock | 27 April 2011, 22:46:49 UTC | Simplify force layout's gravity computation. | 27 April 2011, 22:46:49 UTC |
de1e679 | Jason Davies | 27 April 2011, 17:30:47 UTC | Move spline editor to standalone directory. I've dropped path transitions on Mike's recommendation as D3 doesn't have smart path interpolation at the moment so they don't work too well. I've also fixed some issues with data joins. | 27 April 2011, 20:11:55 UTC |
229a59c | Mike Bostock | 27 April 2011, 17:23:54 UTC | Also prevent clicks from propagating on drag. | 27 April 2011, 17:23:54 UTC |
beb53fe | Jason Davies | 26 April 2011, 11:10:48 UTC | Add spline editor example. | 27 April 2011, 11:20:29 UTC |
9d80ac2 | Square | 27 April 2011, 00:26:21 UTC | Merge branch 'force' | 27 April 2011, 00:26:21 UTC |
f19d265 | Square | 27 April 2011, 00:20:07 UTC | Optimize initialization of node positions. | 27 April 2011, 00:20:07 UTC |
3502c5f | Square | 27 April 2011, 00:19:43 UTC | Tweak force-dynamic example. | 27 April 2011, 00:19:43 UTC |
ce2e52a | Square | 26 April 2011, 23:53:54 UTC | Initialize node positions based on links. This avoids excessive graph jiggling when new nodes are added to an existing layout. Rather than initializing the new node positions randomly, the new nodes are positioned to be adjacent to linked nodes. | 26 April 2011, 23:53:54 UTC |
f9d0d42 | Square | 26 April 2011, 22:50:22 UTC | Tweak parameters for force example. | 26 April 2011, 22:50:22 UTC |
233a195 | Square | 26 April 2011, 22:42:06 UTC | Better events for force layout. The force layout's listeners are now scoped using the "force" namespace, allowing other event listeners to be registered. In addition, the force layout now stops propagation of mouseup events when a node is moved; this allows a mouseup listener on the node to fire only when it is not moved. | 26 April 2011, 22:42:06 UTC |
7e5fc72 | Square | 26 April 2011, 22:03:10 UTC | Allow `on` to be used with event capturing. | 26 April 2011, 22:03:10 UTC |
01124f2 | Square | 26 April 2011, 21:40:21 UTC | Fix bug where node is removed while dragging. | 26 April 2011, 21:40:21 UTC |
c06e899 | Square | 26 April 2011, 21:35:46 UTC | More uniform gravity. Gravity was getting too strong near the edges, causing bunch-up of nodes. We now use weaker exponential growth in gravitational strength, rather than linear. | 26 April 2011, 21:35:46 UTC |
07674c2 | Jason Davies | 25 April 2011, 11:59:11 UTC | Add x- and y-scales to Q-Q plot. | 25 April 2011, 11:59:11 UTC |
82153e6 | Jason Davies | 24 April 2011, 09:18:03 UTC | Add Q-Q plot. | 25 April 2011, 10:44:34 UTC |
020aaa5 | Mike Bostock | 25 April 2011, 05:35:59 UTC | Update version to 1.12.0. | 25 April 2011, 05:35:59 UTC |
12440fd | Mike Bostock | 25 April 2011, 05:34:47 UTC | Merge branch 'hierarchy' | 25 April 2011, 05:34:47 UTC |
13aafed | Mike Bostock | 25 April 2011, 05:33:56 UTC | Merge branch 'force' | 25 April 2011, 05:33:56 UTC |
420fed1 | Mike Bostock | 25 April 2011, 05:29:36 UTC | Use default priority of "" rather than null. Maybe this'll make IE9 happy? | 25 April 2011, 05:29:36 UTC |
b15a273 | Mike Bostock | 25 April 2011, 05:09:48 UTC | Merge remote branch 'Caged/master' | 25 April 2011, 05:09:48 UTC |
62f0364 | Caged | 24 April 2011, 19:13:40 UTC | update diagonals, use d3.functor instead of the removed d3_functor function | 24 April 2011, 19:13:40 UTC |
379b8ad | Mike Bostock | 20 April 2011, 04:01:38 UTC | Allow force parameters to be customized. | 20 April 2011, 04:01:38 UTC |
7a6f04e | Mike Bostock | 20 April 2011, 03:24:19 UTC | Cluster & tree layouts don't use `value`. These hierarchical layouts inadvertantly exposed the `value` attribute and default sort-by-value, even though they don't depend on a numeric node value to compute the layout. Additionally, the hierarchical layout would filter any nodes with nonpositive (or undefined) values, which was overly strict. Fixes #121. | 20 April 2011, 03:24:19 UTC |
7be9277 | Mike Bostock | 20 April 2011, 02:18:35 UTC | Don't normalize gravity. Gravity (by which I mean a spring connecting each node to the center of the layout) should not decay linearly as more nodes are added to the graph; otherwise, repulsive charge forces will overwhelm gravity. | 20 April 2011, 02:18:35 UTC |
83cb0f0 | Mike Bostock | 20 April 2011, 01:02:19 UTC | Fix simulation restarting. If the simulation cools and stops, we need to restart it, rather than just resetting the alpha parameter. So, it is useful to have both `resume` and `start` methods on the force layout. This commit also fixes a bug where mousedown events on draggable nodes would continue to propagate, interfering with other events (such as clicking to add a node). | 20 April 2011, 01:02:19 UTC |
48537d9 | Mike Bostock | 20 April 2011, 00:50:09 UTC | Don't postpone immediate timers. Previously, rescheduling an immediate timer would cause it to be postponed again by a minimum of 24ms. This is undesirable if the timer is being scheduled in response to user events, such as mousemoves, that can occur very frequently. Now we schedule an early callback once, and don't touch it if it's rescheduled. In addition, the timer loop is now smarter about switching between short and long callbacks. If there's a short delay (< 24ms) until the next timer fires, the timer will use requestAnimationFrame. For longer delays, setTimeout is used. | 20 April 2011, 00:50:09 UTC |
5a41c5e | Mike Bostock | 19 April 2011, 20:56:50 UTC | More efficient restart. | 19 April 2011, 20:56:50 UTC |
6804b1c | Mike Bostock | 19 April 2011, 20:47:19 UTC | Better force layout for dynamic graphs. You can now register the "drag" behavior on nodes multiple times, and the correct behavior will result. In addition, the gravitational force now handles coincident nodes, computing a small random force to separate the nodes rather than setting the position to NaN. To demonstrate the new support for dynamic graphs, this commit includes a fun example where you can click to add new nodes. Any existing nodes within a fixed distance to the cursor on click will be linked to the new node. | 19 April 2011, 20:47:19 UTC |
7abebef | Mike Bostock | 19 April 2011, 20:03:41 UTC | Better center gravity. Rather than applying gravity to the entire graph, we now apply it to individual nodes, such that disconnected nodes and subgraphs still have a tendency to drift towards the center. In addition, rather than using a standard gravitational force that drops quadratically with distance, we use a weak spring who force increases with distance. This makes the gravitational effect less noticeable near the center, and also makes the effect stronger the more the nodes drift from the center. To balance the center "gravity" with the repulsive charge force, we also normalize the strength of the gravity based on the number of nodes in the graph. | 19 April 2011, 20:03:41 UTC |
fd804ce | Mike Bostock | 19 April 2011, 19:39:37 UTC | Better force layout. Use Barnes-Hut criterion (a fast multipole method) for approximating repulsive charge forces between nodes. This replaces the previous approach using Floyd- Warshall to compute the graph theoretic distance between all nodes, eliminating O(n^3) initialization time. Additionally, the charge force is now O(n lg n) per iteration rather than O(n^2). Using the center of mass of the graph, apply gravitional attraction towards the graph center (based on the layout size). This encourages the graph to stay near the center rather than drifting away. | 19 April 2011, 19:39:37 UTC |
587b1bb | Mike Bostock | 19 April 2011, 19:17:46 UTC | Use x+y objects for quadtree points. This makes the quadtree implementation more compatible with the force layout. This change is backwards-compatible; if the points are not specified as x+y objects, they are assumed to be tuples and converted to objects. | 19 April 2011, 19:19:04 UTC |
43e2ccc | Mike Bostock | 14 April 2011, 23:51:53 UTC | Fix fill color for iOS. | 14 April 2011, 23:53:33 UTC |
f028aa0 | Mike Bostock | 14 April 2011, 21:20:07 UTC | Add bubble chart example. | 14 April 2011, 21:20:07 UTC |
de3d1c1 | Mike Bostock | 14 April 2011, 06:59:15 UTC | Remove examples/index.html. This is no longer needed, as Python's SimpleHTTPServer does directory listing. | 14 April 2011, 06:59:15 UTC |
d4e571e | Mike Bostock | 14 April 2011, 06:58:46 UTC | Replace flare.json's with symlinks. | 14 April 2011, 06:58:46 UTC |
47f9ced | Mike Bostock | 14 April 2011, 06:54:47 UTC | Merge branch 'release' | 14 April 2011, 06:54:47 UTC |
2eb4573 | Mike Bostock | 14 April 2011, 06:53:59 UTC | Merge branch 'box' into release | 14 April 2011, 06:53:59 UTC |
39dea01 | Mike Bostock | 14 April 2011, 06:51:29 UTC | Merge branch 'cluster' into release | 14 April 2011, 06:51:29 UTC |
f7521a1 | Mike Bostock | 14 April 2011, 06:49:53 UTC | Merge branch 'pack' into release | 14 April 2011, 06:49:53 UTC |
2c80b09 | Mike Bostock | 14 April 2011, 06:45:54 UTC | Remove blank line. | 14 April 2011, 06:45:54 UTC |
7f31d33 | Mike Bostock | 14 April 2011, 06:44:25 UTC | Rename private variable `clamp`. | 14 April 2011, 06:44:25 UTC |
4356e4f | Mike Bostock | 14 April 2011, 06:28:04 UTC | Fix some ordering issues with transitions. By default, `append` will go to the end. This could cause the center line to be rendered on top of the box rect if whiskers were removed then re-added. By using the `insert` operator, we can preserve the correct order. | 14 April 2011, 06:28:04 UTC |
126e625 | Mike Bostock | 14 April 2011, 06:13:06 UTC | Add d3.svg.diagonal. This is a utility for creating a Bézier curve between opposite corners of a rectangle. This is commonly used to draw smooth curves connecting parent and child nodes in a hierarchical node-link diagram. A projection may be specified which allows the curve to be transformed from polar coordinates. This commit also changes the semantics of the recently-added `links` method, such that the objects have `source` and `target` properties that match the default diagonal format. | 14 April 2011, 06:13:06 UTC |
8d7bd91 | Mike Bostock | 14 April 2011, 05:41:30 UTC | Add `links` methods to cluster & tree. This method can be used to generate an array of parent+child objects for a given array of nodes. This is convenient for drawing paths from parent to child in node-link diagrams. | 14 April 2011, 05:41:30 UTC |
60b6a3d | Mike Bostock | 14 April 2011, 05:04:11 UTC | Simplify cluster layout. The `cluster` layout is now more similar to the `tree` layout, using a separation function rather than a group property. In addition, the breadth and depth properties are replaced with x and y, respectively, and scaled according to the size of the layout. I've updated the examples to make them more consistent, as well, including the pretty Bézier curves. In a future commit I'd like to take some of the duplicate code in the examples and move that into reusable methods. | 14 April 2011, 05:04:11 UTC |
222629a | Mike Bostock | 14 April 2011, 01:50:26 UTC | Text transitions. You can now use the `text` operator on transitions, which has the same effect as setting the text value at the start of the transition. This is nice if you have a delayed transition, and avoids a common gotcha. This commit also simplifies the implementation of the `text` operator using the standard `textContent` property. This isn't supported on IE8-, but we could potentially add support in the future using `innerText`. | 14 April 2011, 01:50:26 UTC |
55ee1b8 | Mike Bostock | 14 April 2011, 01:12:16 UTC | Add test for interpolate. | 14 April 2011, 01:19:31 UTC |
c29d4dc | Mike Bostock | 14 April 2011, 00:31:16 UTC | Better box chart transitions. Preserving object constancy across transitions is tricky! For example, what happens if we remove the whiskers in a transition? How do we join outliers? This commit makes a few assumptions explicit: 1. The `quartiles` function must return exactly three elements. This property must be specified as a function. 2. The `whiskers` function must return exactly 2 elements, or null if no whiskers are to be displayed. This property must be specified as a function. 3. The `domain` function must return exactly 2 elements, or null if the default domain should be used. This property can be specified either as a constant or as a function. We could generalize this chart to support more than two whiskers, but it doesn't seem urgent, and it would complicate the transition if the number of whiskers changes. In a related change, the `whiskers` function does not receive a third argument containing the quartiles; instead, this is made available by the `quartiles` property on the values array (the first argument). The outliers are joined using the `Number` key function. The outlier data is now stored as indices; this allows reasonable object constancy across transitions with outliers. Similarly, the tick labels for the quartiles are whiskers are now separated, such that the whisker labels can be added or removed without spurious transition. | 14 April 2011, 00:44:20 UTC |
dd5b21a | Mike Bostock | 14 April 2011, 00:16:51 UTC | Fix a bug in d3.interpolateString. The regular expression wasn't being reset, so we weren't always finding numbers! | 14 April 2011, 00:16:51 UTC |
1266373 | Jason Davies | 13 April 2011, 22:40:00 UTC | Fix quartile calculation. The outliers were being incorrectly excluded when computing the quartiles. I've also added a +/-1.5 IQR whiskers computation for the Morley-Michelson example, so it replicates the R plot exactly. | 13 April 2011, 22:40:00 UTC |
f9569c5 | Jason Davies | 13 April 2011, 22:27:52 UTC | Minor optimisations. | 13 April 2011, 22:27:52 UTC |
e7d359e | Jason Davies | 13 April 2011, 22:27:25 UTC | Optimise; and fix typo. | 13 April 2011, 22:27:25 UTC |
a7b3c32 | Jason Davies | 13 April 2011, 22:20:16 UTC | Remove unused title svg:g. | 13 April 2011, 22:20:16 UTC |
3477764 | Jason Davies | 13 April 2011, 22:16:10 UTC | Fix randomize button. | 13 April 2011, 22:16:10 UTC |
6c8cef1 | Jason Davies | 13 April 2011, 22:12:18 UTC | Add Michelson-Morley data for box plot example. Source: R statistical project Original source: A. J. Weekes (1986) A Genstat Primer. London: Edward Arnold. | 13 April 2011, 22:12:18 UTC |
88eabf1 | Jason Davies | 13 April 2011, 21:33:15 UTC | Continue renaming "boxplot" to "box". | 13 April 2011, 21:33:15 UTC |
0b8aa07 | Jason Davies | 13 April 2011, 21:31:53 UTC | Rename "boxplot" to "box". | 13 April 2011, 21:31:53 UTC |
54756f4 | Jason Davies | 13 April 2011, 21:29:44 UTC | Fix central dashed line. | 13 April 2011, 21:29:44 UTC |
d288e69 | Jason Davies | 13 April 2011, 21:27:25 UTC | Remove `outlierSymbol` property. Circles are simpler. | 13 April 2011, 21:27:25 UTC |
b693e05 | Jason Davies | 13 April 2011, 21:21:29 UTC | Make quartiles computation configurable. The `quartiles` property takes the sorted data array (excluding outliers) and returns the three quartiles. | 13 April 2011, 21:21:29 UTC |
9721e6f | Jason Davies | 13 April 2011, 20:59:37 UTC | Display outliers. The symbol can be specified using the `outlierSymbol` property, which specifies the `d` attribute for an SVG path. | 13 April 2011, 20:59:37 UTC |
755529d | Jason Davies | 13 April 2011, 20:09:31 UTC | Add `whiskers` property to box plot. This specifies a function that takes the sorted data array, and returns an array of datum positions that should marked with whiskers. The default implementation is to return `[0, length-1]` i.e. the minimum and maximum. Data outside of the whiskers are considered outliers, and are not included in the quartile calculation. | 13 April 2011, 20:23:49 UTC |
9518fec | Jason Davies | 13 April 2011, 19:39:12 UTC | Replace `sort` property with `value`. Much more useful, as we'll always want to sort by ascending value anyway. | 13 April 2011, 19:39:12 UTC |
8fc521c | Jason Davies | 13 April 2011, 19:35:33 UTC | Add function support to the `domain` property. This allows us to specify different domains across multiple box plots. Thanks Mike for the suggestion! | 13 April 2011, 19:35:33 UTC |
b6b39af | Jason Davies | 13 April 2011, 19:34:13 UTC | Expose `d3_functor` as `d3.functor`. This is so it can be used in other modules such as the charts module. | 13 April 2011, 19:34:13 UTC |
5719f19 | Jason Davies | 13 April 2011, 19:13:58 UTC | Make boxplot sort configurable. | 13 April 2011, 19:14:29 UTC |
2e8cd20 | Jason Davies | 13 April 2011, 17:53:52 UTC | Add boxplot chart. | 13 April 2011, 18:57:57 UTC |
9889915 | Nelson Minar | 12 April 2011, 02:11:44 UTC | put Makefile back | 12 April 2011, 02:11:44 UTC |
24de130 | Nelson Minar | 12 April 2011, 02:10:27 UTC | fix my git mistake, adding d3.min.js back | 12 April 2011, 02:10:27 UTC |
c7c9e7f | Nelson Minar | 12 April 2011, 02:09:19 UTC | rename clamped() method to clamp() | 12 April 2011, 02:09:19 UTC |
2548d4f | Nelson Minar | 12 April 2011, 02:02:48 UTC | Merge branch 'master' of https://github.com/mbostock/d3 Conflicts: d3.min.js | 12 April 2011, 02:02:48 UTC |
776f332 | Mike Bostock | 11 April 2011, 20:52:21 UTC | More pretty Béziers. | 11 April 2011, 20:52:21 UTC |
0ca148d | Mike Bostock | 11 April 2011, 20:22:24 UTC | Add pretty Bézier curves. | 11 April 2011, 20:22:24 UTC |
c7109df | Mike Bostock | 11 April 2011, 19:55:27 UTC | Rename for readability. | 11 April 2011, 19:55:27 UTC |
c5c6614 | Mike Bostock | 11 April 2011, 19:44:17 UTC | Simplify pack layout. The pack layout now sorts nodes by ascending value by default. The `radius` property is removed, as the radius is always computed from the node value. The `spacing` property is also removed; it doesn't seem particularly useful. The `radius` property is renamed to `r` to match `x` and `y`. I also optimized the implementation slightly, and namespaced temporary state under the prefix `_pack_`. | 11 April 2011, 19:44:17 UTC |
5ef5253 | Jason Davies | 11 April 2011, 10:25:19 UTC | Add cluster-radial to examples index. | 11 April 2011, 10:25:19 UTC |
6ebe9e5 | Jason Davies | 11 April 2011, 09:50:34 UTC | Add cluster (dendogram) layout. Based on the Protovis version. The only difference is that I've dropped the `orient`, `innerRadius` and `outerRadius` properties so that the D3 version is more flexible. | 11 April 2011, 10:19:59 UTC |
ccfbb06 | Jason Davies | 11 April 2011, 08:54:33 UTC | Add circle-packing layout. Based on the Protovis layout. I've kept the convention of using `size` for the width/height and `separation` for the spacing. The Protovis layout had a `size` property but this was used to compute the radius. I've left this out as I've assumed it's straightforward enough to pass in the appropriate `radius` function instead. Likewise, I think the existing hierarchy `sort` property can handle situations that `order` was intended for in the Protovis version. | 11 April 2011, 09:01:11 UTC |
9f71e4e | Mike Bostock | 11 April 2011, 06:26:35 UTC | Fix a bug in cardinal-closed interpolation. | 11 April 2011, 06:26:35 UTC |
ca3585e | Mike Bostock | 11 April 2011, 01:56:16 UTC | Move tree examples into div#chart. | 11 April 2011, 01:59:41 UTC |
915be32 | Mike Bostock | 11 April 2011, 01:44:45 UTC | Merge branch 'tree' | 11 April 2011, 01:44:45 UTC |
597443b | Mike Bostock | 11 April 2011, 01:37:23 UTC | Rotate text by 180 when upside-down. | 11 April 2011, 01:37:23 UTC |
f6975bb | Mike Bostock | 11 April 2011, 01:28:59 UTC | Fix prefix in private functions. | 11 April 2011, 01:28:59 UTC |
2603082 | Nelson Minar | 10 April 2011, 23:16:13 UTC | shorter clamp implementation suggested by mbostock | 10 April 2011, 23:16:13 UTC |