229a59c | Mike Bostock | 27 April 2011, 17:23:54 UTC | Also prevent clicks from propagating on drag. | 27 April 2011, 17:23:54 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 |
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 |
a5055b4 | Nelson Minar | 10 April 2011, 21:42:25 UTC | add clamped() to numeric scales | 10 April 2011, 21:42:25 UTC |
2c03029 | Mike Bostock | 10 April 2011, 20:56:34 UTC | Compute wrap-around separation. | 10 April 2011, 20:56:34 UTC |
7151746 | Mike Bostock | 10 April 2011, 20:29:32 UTC | Add tree-radial example. | 10 April 2011, 20:29:32 UTC |
ed1042f | Mike Bostock | 10 April 2011, 20:15:15 UTC | A tiny bit cleaner. | 10 April 2011, 20:15:15 UTC |
6e90143 | Mike Bostock | 10 April 2011, 20:04:21 UTC | Move temporary state to node._tree. | 10 April 2011, 20:04:21 UTC |
111e8e5 | Mike Bostock | 10 April 2011, 19:47:32 UTC | More readability improvements. | 10 April 2011, 19:47:32 UTC |
ca3c272 | Mike Bostock | 10 April 2011, 19:36:58 UTC | More readability improvements. | 10 April 2011, 19:36:58 UTC |
3571cc3 | Mike Bostock | 10 April 2011, 19:16:26 UTC | Rewrite `firstWalk` for readability. | 10 April 2011, 19:16:26 UTC |
0c88813 | Mike Bostock | 10 April 2011, 19:07:17 UTC | Generalizing tree layout. Rather than specifying an orientation, compute the layout in normalized space. In a future change, I'd also like to clean up the temporary state that is stored on tree nodes, and record dx and dy attributes per node that could be used to compute a space-filling layout. | 10 April 2011, 19:07:17 UTC |
dfd0ad3 | Mike Bostock | 10 April 2011, 17:45:51 UTC | Render links below nodes and labels. | 10 April 2011, 17:45:51 UTC |
824e176 | Jason Davies | 10 April 2011, 15:25:04 UTC | Tree layout: remove stray @private comments. | 10 April 2011, 15:25:04 UTC |
f208a5b | Jason Davies | 10 April 2011, 09:46:13 UTC | Add Reingold-Tilford tree layout. This is based on the Protovis layout; virtually no changes were needed to the code aside from handling of previous and next siblings. | 10 April 2011, 15:20:51 UTC |
a262ba7 | Mike Bostock | 09 April 2011, 21:14:10 UTC | Merge branch 'examples_index' of https://github.com/jasondavies/d3 into jasondavies-examples_index | 09 April 2011, 21:14:10 UTC |
c687cc1 | Jason Davies | 09 April 2011, 21:09:09 UTC | Remove broken links from examples index. | 09 April 2011, 21:09:09 UTC |
bf180dc | Mike Bostock | 09 April 2011, 20:46:25 UTC | Fix a transition bug in bullet chart. We were computing the tick join based on the (new) format function, but doesn't produce the desired effect: the new format is applied on the old data. Thus, the wrong join occurs if, say, the value 0.5 with the new format results in "0". The correct join compares the old text content to the new format value. | 09 April 2011, 20:56:28 UTC |
d9d85f0 | Mike Bostock | 09 April 2011, 20:00:38 UTC | No initial transition. | 09 April 2011, 20:00:38 UTC |
40be541 | Mike Bostock | 09 April 2011, 19:38:48 UTC | Restructure bullet chart example. | 09 April 2011, 19:38:48 UTC |
3e1e4f1 | Mike Bostock | 09 April 2011, 19:08:14 UTC | Add remove test. | 09 April 2011, 19:08:22 UTC |
0f8c800 | Mike Bostock | 09 April 2011, 19:05:55 UTC | Add insert test. | 09 April 2011, 19:05:55 UTC |
05f58d3 | Mike Bostock | 09 April 2011, 19:03:52 UTC | Fix a bug in env-js re. insertBefore. | 09 April 2011, 19:03:52 UTC |
57f2ecf | Mike Bostock | 09 April 2011, 18:27:30 UTC | Merge branch 'bullet' | 09 April 2011, 18:27:30 UTC |