Last active
October 24, 2025 13:50
-
-
Save mbostock/9a8124ccde3a4e9625bc413b48f14b30 to your computer and use it in GitHub Desktop.
Force-Directed Tree II
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| border: no | |
| height: 640 | |
| license: gpl-3.0 | |
| redirect: https://observablehq.com/@d3/force-directed-tree |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| size | path | |
|---|---|---|
| d3 | ||
| d3/d3-array | ||
| d3/d3-array/threshold | ||
| d3/d3-axis | ||
| d3/d3-brush | ||
| d3/d3-chord | ||
| d3/d3-collection | ||
| d3/d3-color | ||
| d3/d3-dispatch | ||
| d3/d3-drag | ||
| d3/d3-dsv | ||
| d3/d3-ease | ||
| d3/d3-force | ||
| d3/d3-format | ||
| d3/d3-geo | ||
| d3/d3-geo/clip | ||
| d3/d3-geo/path | ||
| d3/d3-geo/projection | ||
| d3/d3-hierarchy | ||
| d3/d3-hierarchy/hierarchy | ||
| d3/d3-hierarchy/pack | ||
| d3/d3-hierarchy/treemap | ||
| d3/d3-interpolate | ||
| d3/d3-interpolate/transform | ||
| d3/d3-path | ||
| d3/d3-polygon | ||
| d3/d3-quadtree | ||
| d3/d3-queue | ||
| d3/d3-random | ||
| d3/d3-request | ||
| d3/d3-scale | ||
| d3/d3-selection | ||
| d3/d3-selection/selection | ||
| d3/d3-shape | ||
| d3/d3-shape/curve | ||
| d3/d3-shape/offset | ||
| d3/d3-shape/order | ||
| d3/d3-shape/symbol | ||
| d3/d3-time-format | ||
| d3/d3-time | ||
| d3/d3-timer | ||
| d3/d3-transition | ||
| d3/d3-transition/selection | ||
| d3/d3-transition/transition | ||
| d3/d3-voronoi | ||
| d3/d3-zoom | ||
| 90 | d3/d3-array/array.js | |
| 86 | d3/d3-array/ascending.js | |
| 238 | d3/d3-array/bisect.js | |
| 786 | d3/d3-array/bisector.js | |
| 72 | d3/d3-array/constant.js | |
| 86 | d3/d3-array/descending.js | |
| 135 | d3/d3-array/deviation.js | |
| 553 | d3/d3-array/extent.js | |
| 1876 | d3/d3-array/histogram.js | |
| 43 | d3/d3-array/identity.js | |
| 451 | d3/d3-array/max.js | |
| 362 | d3/d3-array/mean.js | |
| 452 | d3/d3-array/median.js | |
| 339 | d3/d3-array/merge.js | |
| 451 | d3/d3-array/min.js | |
| 63 | d3/d3-array/number.js | |
| 182 | d3/d3-array/pairs.js | |
| 161 | d3/d3-array/permute.js | |
| 416 | d3/d3-array/quantile.js | |
| 344 | d3/d3-array/range.js | |
| 357 | d3/d3-array/scan.js | |
| 285 | d3/d3-array/shuffle.js | |
| 295 | d3/d3-array/sum.js | |
| 361 | d3/d3-array/threshold/freedmanDiaconis.js | |
| 180 | d3/d3-array/threshold/scott.js | |
| 96 | d3/d3-array/threshold/sturges.js | |
| 672 | d3/d3-array/ticks.js | |
| 356 | d3/d3-array/transpose.js | |
| 540 | d3/d3-array/variance.js | |
| 99 | d3/d3-array/zip.js | |
| 42 | d3/d3-axis/array.js | |
| 5239 | d3/d3-axis/axis.js | |
| 43 | d3/d3-axis/identity.js | |
| 15778 | d3/d3-brush/brush.js | |
| 72 | d3/d3-brush/constant.js | |
| 127 | d3/d3-brush/event.js | |
| 202 | d3/d3-brush/noevent.js | |
| 42 | d3/d3-chord/array.js | |
| 3178 | d3/d3-chord/chord.js | |
| 72 | d3/d3-chord/constant.js | |
| 159 | d3/d3-chord/math.js | |
| 2340 | d3/d3-chord/ribbon.js | |
| 137 | d3/d3-collection/entries.js | |
| 104 | d3/d3-collection/keys.js | |
| 1988 | d3/d3-collection/map.js | |
| 2021 | d3/d3-collection/nest.js | |
| 800 | d3/d3-collection/set.js | |
| 115 | d3/d3-collection/values.js | |
| 9276 | d3/d3-color/color.js | |
| 1855 | d3/d3-color/cubehelix.js | |
| 340 | d3/d3-color/define.js | |
| 3167 | d3/d3-color/lab.js | |
| 72 | d3/d3-color/math.js | |
| 2729 | d3/d3-dispatch/dispatch.js | |
| 72 | d3/d3-drag/constant.js | |
| 4297 | d3/d3-drag/drag.js | |
| 430 | d3/d3-drag/event.js | |
| 857 | d3/d3-drag/nodrag.js | |
| 202 | d3/d3-drag/noevent.js | |
| 199 | d3/d3-dsv/csv.js | |
| 3582 | d3/d3-dsv/dsv.js | |
| 200 | d3/d3-dsv/tsv.js | |
| 653 | d3/d3-ease/back.js | |
| 521 | d3/d3-ease/bounce.js | |
| 261 | d3/d3-ease/circle.js | |
| 210 | d3/d3-ease/cubic.js | |
| 1309 | d3/d3-ease/elastic.js | |
| 251 | d3/d3-ease/exp.js | |
| 43 | d3/d3-ease/linear.js | |
| 596 | d3/d3-ease/poly.js | |
| 192 | d3/d3-ease/quad.js | |
| 236 | d3/d3-ease/sin.js | |
| 654 | d3/d3-force/center.js | |
| 2447 | d3/d3-force/collide.js | |
| 72 | d3/d3-force/constant.js | |
| 69 | d3/d3-force/jiggle.js | |
| 3213 | d3/d3-force/link.js | |
| 3181 | d3/d3-force/manyBody.js | |
| 3444 | d3/d3-force/simulation.js | |
| 1030 | d3/d3-force/x.js | |
| 1030 | d3/d3-force/y.js | |
| 361 | d3/d3-format/defaultLocale.js | |
| 134 | d3/d3-format/exponent.js | |
| 656 | d3/d3-format/formatDecimal.js | |
| 368 | d3/d3-format/formatDefault.js | |
| 475 | d3/d3-format/formatGroup.js | |
| 611 | d3/d3-format/formatPrefixAuto.js | |
| 458 | d3/d3-format/formatRounded.js | |
| 1589 | d3/d3-format/formatSpecifier.js | |
| 846 | d3/d3-format/formatTypes.js | |
| 5247 | d3/d3-format/locale.js | |
| 119 | d3/d3-format/precisionFixed.js | |
| 190 | d3/d3-format/precisionPrefix.js | |
| 186 | d3/d3-format/precisionRound.js | |
| 906 | d3/d3-geo/adder.js | |
| 1958 | d3/d3-geo/area.js | |
| 5361 | d3/d3-geo/bounds.js | |
| 929 | d3/d3-geo/cartesian.js | |
| 3816 | d3/d3-geo/centroid.js | |
| 2373 | d3/d3-geo/circle.js | |
| 2897 | d3/d3-geo/clip/antimeridian.js | |
| 470 | d3/d3-geo/clip/buffer.js | |
| 5956 | d3/d3-geo/clip/circle.js | |
| 5527 | d3/d3-geo/clip/extent.js | |
| 3813 | d3/d3-geo/clip/index.js | |
| 1099 | d3/d3-geo/clip/line.js | |
| 2802 | d3/d3-geo/clip/polygon.js | |
| 250 | d3/d3-geo/compose.js | |
| 72 | d3/d3-geo/constant.js | |
| 229 | d3/d3-geo/distance.js | |
| 3034 | d3/d3-geo/graticule.js | |
| 43 | d3/d3-geo/identity.js | |
| 911 | d3/d3-geo/interpolate.js | |
| 1309 | d3/d3-geo/length.js | |
| 880 | d3/d3-geo/math.js | |
| 34 | d3/d3-geo/noop.js | |
| 945 | d3/d3-geo/path/area.js | |
| 485 | d3/d3-geo/path/bounds.js | |
| 2033 | d3/d3-geo/path/centroid.js | |
| 914 | d3/d3-geo/path/context.js | |
| 1690 | d3/d3-geo/path/index.js | |
| 1149 | d3/d3-geo/path/string.js | |
| 139 | d3/d3-geo/pointEqual.js | |
| 2491 | d3/d3-geo/polygonContains.js | |
| 235 | d3/d3-geo/projection/albers.js | |
| 3986 | d3/d3-geo/projection/albersUsa.js | |
| 502 | d3/d3-geo/projection/azimuthal.js | |
| 447 | d3/d3-geo/projection/azimuthalEqualArea.js | |
| 443 | d3/d3-geo/projection/azimuthalEquidistant.js | |
| 402 | d3/d3-geo/projection/conic.js | |
| 1017 | d3/d3-geo/projection/conicConformal.js | |
| 871 | d3/d3-geo/projection/conicEqualArea.js | |
| 771 | d3/d3-geo/projection/conicEquidistant.js | |
| 314 | d3/d3-geo/projection/cylindricalEqualArea.js | |
| 253 | d3/d3-geo/projection/equirectangular.js | |
| 910 | d3/d3-geo/projection/fit.js | |
| 387 | d3/d3-geo/projection/gnomonic.js | |
| 1922 | d3/d3-geo/projection/identity.js | |
| 3752 | d3/d3-geo/projection/index.js | |
| 1119 | d3/d3-geo/projection/mercator.js | |
| 376 | d3/d3-geo/projection/orthographic.js | |
| 3275 | d3/d3-geo/projection/resample.js | |
| 436 | d3/d3-geo/projection/stereographic.js | |
| 762 | d3/d3-geo/projection/transverseMercator.js | |
| 2509 | d3/d3-geo/rotation.js | |
| 2305 | d3/d3-geo/stream.js | |
| 701 | d3/d3-geo/transform.js | |
| 166 | d3/d3-hierarchy/accessors.js | |
| 2093 | d3/d3-hierarchy/cluster.js | |
| 120 | d3/d3-hierarchy/constant.js | |
| 138 | d3/d3-hierarchy/hierarchy/ancestors.js | |
| 121 | d3/d3-hierarchy/hierarchy/descendants.js | |
| 381 | d3/d3-hierarchy/hierarchy/each.js | |
| 353 | d3/d3-hierarchy/hierarchy/eachAfter.js | |
| 282 | d3/d3-hierarchy/hierarchy/eachBefore.js | |
| 1819 | d3/d3-hierarchy/hierarchy/index.js | |
| 164 | d3/d3-hierarchy/hierarchy/leaves.js | |
| 246 | d3/d3-hierarchy/hierarchy/links.js | |
| 606 | d3/d3-hierarchy/hierarchy/path.js | |
| 151 | d3/d3-hierarchy/hierarchy/sort.js | |
| 264 | d3/d3-hierarchy/hierarchy/sum.js | |
| 2452 | d3/d3-hierarchy/pack/enclose.js | |
| 1917 | d3/d3-hierarchy/pack/index.js | |
| 389 | d3/d3-hierarchy/pack/shuffle.js | |
| 3497 | d3/d3-hierarchy/pack/siblings.js | |
| 1266 | d3/d3-hierarchy/partition.js | |
| 1934 | d3/d3-hierarchy/stratify.js | |
| 7060 | d3/d3-hierarchy/tree.js | |
| 1184 | d3/d3-hierarchy/treemap/binary.js | |
| 309 | d3/d3-hierarchy/treemap/dice.js | |
| 2810 | d3/d3-hierarchy/treemap/index.js | |
| 1029 | d3/d3-hierarchy/treemap/resquarify.js | |
| 166 | d3/d3-hierarchy/treemap/round.js | |
| 309 | d3/d3-hierarchy/treemap/slice.js | |
| 170 | d3/d3-hierarchy/treemap/sliceDice.js | |
| 1868 | d3/d3-hierarchy/treemap/squarify.js | |
| 372 | d3/d3-interpolate/array.js | |
| 600 | d3/d3-interpolate/basis.js | |
| 360 | d3/d3-interpolate/basisClosed.js | |
| 697 | d3/d3-interpolate/color.js | |
| 72 | d3/d3-interpolate/constant.js | |
| 760 | d3/d3-interpolate/cubehelix.js | |
| 134 | d3/d3-interpolate/date.js | |
| 547 | d3/d3-interpolate/hcl.js | |
| 547 | d3/d3-interpolate/hsl.js | |
| 447 | d3/d3-interpolate/lab.js | |
| 100 | d3/d3-interpolate/number.js | |
| 390 | d3/d3-interpolate/object.js | |
| 163 | d3/d3-interpolate/quantize.js | |
| 1277 | d3/d3-interpolate/rgb.js | |
| 112 | d3/d3-interpolate/round.js | |
| 1758 | d3/d3-interpolate/string.js | |
| 672 | d3/d3-interpolate/transform/decompose.js | |
| 2064 | d3/d3-interpolate/transform/index.js | |
| 980 | d3/d3-interpolate/transform/parse.js | |
| 598 | d3/d3-interpolate/value.js | |
| 1387 | d3/d3-interpolate/zoom.js | |
| 4089 | d3/d3-path/path.js | |
| 243 | d3/d3-polygon/area.js | |
| 346 | d3/d3-polygon/centroid.js | |
| 411 | d3/d3-polygon/contains.js | |
| 402 | d3/d3-polygon/cross.js | |
| 1710 | d3/d3-polygon/hull.js | |
| 375 | d3/d3-polygon/length.js | |
| 2441 | d3/d3-quadtree/add.js | |
| 1667 | d3/d3-quadtree/cover.js | |
| 170 | d3/d3-quadtree/data.js | |
| 206 | d3/d3-quadtree/extent.js | |
| 1696 | d3/d3-quadtree/find.js | |
| 134 | d3/d3-quadtree/quad.js | |
| 2077 | d3/d3-quadtree/quadtree.js | |
| 1898 | d3/d3-quadtree/remove.js | |
| 51 | d3/d3-quadtree/root.js | |
| 155 | d3/d3-quadtree/size.js | |
| 695 | d3/d3-quadtree/visit.js | |
| 773 | d3/d3-quadtree/visitAfter.js | |
| 138 | d3/d3-quadtree/x.js | |
| 138 | d3/d3-quadtree/y.js | |
| 29 | d3/d3-queue/array.js | |
| 2870 | d3/d3-queue/queue.js | |
| 168 | d3/d3-random/bates.js | |
| 113 | d3/d3-random/exponential.js | |
| 137 | d3/d3-random/irwinHall.js | |
| 178 | d3/d3-random/logNormal.js | |
| 503 | d3/d3-random/normal.js | |
| 236 | d3/d3-random/uniform.js | |
| 101 | d3/d3-request/csv.js | |
| 517 | d3/d3-request/dsv.js | |
| 157 | d3/d3-request/html.js | |
| 127 | d3/d3-request/json.js | |
| 4593 | d3/d3-request/request.js | |
| 109 | d3/d3-request/text.js | |
| 118 | d3/d3-request/tsv.js | |
| 370 | d3/d3-request/type.js | |
| 174 | d3/d3-request/xml.js | |
| 90 | d3/d3-scale/array.js | |
| 2637 | d3/d3-scale/band.js | |
| 119 | d3/d3-scale/category10.js | |
| 179 | d3/d3-scale/category20.js | |
| 179 | d3/d3-scale/category20b.js | |
| 179 | d3/d3-scale/category20c.js | |
| 101 | d3/d3-scale/colors.js | |
| 72 | d3/d3-scale/constant.js | |
| 3328 | d3/d3-scale/continuous.js | |
| 188 | d3/d3-scale/cubehelix.js | |
| 463 | d3/d3-scale/identity.js | |
| 1206 | d3/d3-scale/linear.js | |
| 3273 | d3/d3-scale/log.js | |
| 340 | d3/d3-scale/nice.js | |
| 44 | d3/d3-scale/number.js | |
| 1116 | d3/d3-scale/ordinal.js | |
| 1000 | d3/d3-scale/pow.js | |
| 1280 | d3/d3-scale/quantile.js | |
| 1066 | d3/d3-scale/quantize.js | |
| 536 | d3/d3-scale/rainbow.js | |
| 717 | d3/d3-scale/sequential.js | |
| 802 | d3/d3-scale/threshold.js | |
| 1203 | d3/d3-scale/tickFormat.js | |
| 4565 | d3/d3-scale/time.js | |
| 379 | d3/d3-scale/utcTime.js | |
| 6471 | d3/d3-scale/viridis.js | |
| 72 | d3/d3-selection/constant.js | |
| 662 | d3/d3-selection/creator.js | |
| 536 | d3/d3-selection/local.js | |
| 533 | d3/d3-selection/matcher.js | |
| 224 | d3/d3-selection/mouse.js | |
| 303 | d3/d3-selection/namespace.js | |
| 254 | d3/d3-selection/namespaces.js | |
| 448 | d3/d3-selection/point.js | |
| 259 | d3/d3-selection/select.js | |
| 282 | d3/d3-selection/selectAll.js | |
| 235 | d3/d3-selection/selection/append.js | |
| 1460 | d3/d3-selection/selection/attr.js | |
| 134 | d3/d3-selection/selection/call.js | |
| 1740 | d3/d3-selection/selection/classed.js | |
| 3597 | d3/d3-selection/selection/data.js | |
| 132 | d3/d3-selection/selection/datum.js | |
| 869 | d3/d3-selection/selection/dispatch.js | |
| 289 | d3/d3-selection/selection/each.js | |
| 53 | d3/d3-selection/selection/empty.js | |
| 792 | d3/d3-selection/selection/enter.js | |
| 176 | d3/d3-selection/selection/exit.js | |
| 546 | d3/d3-selection/selection/filter.js | |
| 520 | d3/d3-selection/selection/html.js | |
| 2216 | d3/d3-selection/selection/index.js | |
| 468 | d3/d3-selection/selection/insert.js | |
| 171 | d3/d3-selection/selection/lower.js | |
| 575 | d3/d3-selection/selection/merge.js | |
| 258 | d3/d3-selection/selection/node.js | |
| 140 | d3/d3-selection/selection/nodes.js | |
| 3119 | d3/d3-selection/selection/on.js | |
| 367 | d3/d3-selection/selection/order.js | |
| 617 | d3/d3-selection/selection/property.js | |
| 138 | d3/d3-selection/selection/raise.js | |
| 153 | d3/d3-selection/selection/remove.js | |
| 653 | d3/d3-selection/selection/select.js | |
| 550 | d3/d3-selection/selection/selectAll.js | |
| 98 | d3/d3-selection/selection/size.js | |
| 681 | d3/d3-selection/selection/sort.js | |
| 71 | d3/d3-selection/selection/sparse.js | |
| 889 | d3/d3-selection/selection/style.js | |
| 528 | d3/d3-selection/selection/text.js | |
| 152 | d3/d3-selection/selector.js | |
| 171 | d3/d3-selection/selectorAll.js | |
| 175 | d3/d3-selection/sourceEvent.js | |
| 407 | d3/d3-selection/touch.js | |
| 323 | d3/d3-selection/touches.js | |
| 218 | d3/d3-selection/window.js | |
| 8831 | d3/d3-shape/arc.js | |
| 2917 | d3/d3-shape/area.js | |
| 42 | d3/d3-shape/array.js | |
| 81 | d3/d3-shape/constant.js | |
| 1436 | d3/d3-shape/curve/basis.js | |
| 1530 | d3/d3-shape/curve/basisClosed.js | |
| 1069 | d3/d3-shape/curve/basisOpen.js | |
| 1081 | d3/d3-shape/curve/bundle.js | |
| 1633 | d3/d3-shape/curve/cardinal.js | |
| 1605 | d3/d3-shape/curve/cardinalClosed.js | |
| 1288 | d3/d3-shape/curve/cardinalOpen.js | |
| 2637 | d3/d3-shape/curve/catmullRom.js | |
| 2083 | d3/d3-shape/curve/catmullRomClosed.js | |
| 1760 | d3/d3-shape/curve/catmullRomOpen.js | |
| 738 | d3/d3-shape/curve/linear.js | |
| 514 | d3/d3-shape/curve/linearClosed.js | |
| 3203 | d3/d3-shape/curve/monotone.js | |
| 1761 | d3/d3-shape/curve/natural.js | |
| 655 | d3/d3-shape/curve/radial.js | |
| 1367 | d3/d3-shape/curve/step.js | |
| 86 | d3/d3-shape/descending.js | |
| 43 | d3/d3-shape/identity.js | |
| 1516 | d3/d3-shape/line.js | |
| 106 | d3/d3-shape/math.js | |
| 29 | d3/d3-shape/noop.js | |
| 319 | d3/d3-shape/offset/expand.js | |
| 310 | d3/d3-shape/offset/none.js | |
| 314 | d3/d3-shape/offset/silhouette.js | |
| 740 | d3/d3-shape/offset/wiggle.js | |
| 305 | d3/d3-shape/order/ascending.js | |
| 112 | d3/d3-shape/order/descending.js | |
| 545 | d3/d3-shape/order/insideOut.js | |
| 120 | d3/d3-shape/order/none.js | |
| 97 | d3/d3-shape/order/reverse.js | |
| 2336 | d3/d3-shape/pie.js | |
| 81 | d3/d3-shape/point.js | |
| 934 | d3/d3-shape/radialArea.js | |
| 396 | d3/d3-shape/radialLine.js | |
| 1432 | d3/d3-shape/stack.js | |
| 186 | d3/d3-shape/symbol/circle.js | |
| 476 | d3/d3-shape/symbol/cross.js | |
| 307 | d3/d3-shape/symbol/diamond.js | |
| 137 | d3/d3-shape/symbol/square.js | |
| 609 | d3/d3-shape/symbol/star.js | |
| 255 | d3/d3-shape/symbol/triangle.js | |
| 733 | d3/d3-shape/symbol/wye.js | |
| 1160 | d3/d3-shape/symbol.js | |
| 867 | d3/d3-time-format/defaultLocale.js | |
| 284 | d3/d3-time-format/isoFormat.js | |
| 319 | d3/d3-time-format/isoParse.js | |
| 13876 | d3/d3-time-format/locale.js | |
| 462 | d3/d3-time/day.js | |
| 164 | d3/d3-time/duration.js | |
| 569 | d3/d3-time/hour.js | |
| 1845 | d3/d3-time/interval.js | |
| 668 | d3/d3-time/millisecond.js | |
| 437 | d3/d3-time/minute.js | |
| 414 | d3/d3-time/month.js | |
| 440 | d3/d3-time/second.js | |
| 397 | d3/d3-time/utcDay.js | |
| 399 | d3/d3-time/utcHour.js | |
| 412 | d3/d3-time/utcMinute.js | |
| 453 | d3/d3-time/utcMonth.js | |
| 979 | d3/d3-time/utcWeek.js | |
| 808 | d3/d3-time/utcYear.js | |
| 963 | d3/d3-time/week.js | |
| 754 | d3/d3-time/year.js | |
| 400 | d3/d3-timer/interval.js | |
| 250 | d3/d3-timer/timeout.js | |
| 2771 | d3/d3-timer/timer.js | |
| 484 | d3/d3-transition/active.js | |
| 665 | d3/d3-transition/interrupt.js | |
| 245 | d3/d3-transition/selection/index.js | |
| 138 | d3/d3-transition/selection/interrupt.js | |
| 1090 | d3/d3-transition/selection/transition.js | |
| 2473 | d3/d3-transition/transition/attr.js | |
| 904 | d3/d3-transition/transition/attrTween.js | |
| 510 | d3/d3-transition/transition/delay.js | |
| 528 | d3/d3-transition/transition/duration.js | |
| 348 | d3/d3-transition/transition/ease.js | |
| 574 | d3/d3-transition/transition/filter.js | |
| 1892 | d3/d3-transition/transition/index.js | |
| 340 | d3/d3-transition/transition/interpolate.js | |
| 653 | d3/d3-transition/transition/merge.js | |
| 853 | d3/d3-transition/transition/on.js | |
| 284 | d3/d3-transition/transition/remove.js | |
| 4792 | d3/d3-transition/transition/schedule.js | |
| 826 | d3/d3-transition/transition/select.js | |
| 883 | d3/d3-transition/transition/selectAll.js | |
| 174 | d3/d3-transition/transition/selection.js | |
| 2119 | d3/d3-transition/transition/style.js | |
| 607 | d3/d3-transition/transition/styleTween.js | |
| 473 | d3/d3-transition/transition/text.js | |
| 691 | d3/d3-transition/transition/transition.js | |
| 2026 | d3/d3-transition/transition/tween.js | |
| 4381 | d3/d3-voronoi/Beach.js | |
| 4087 | d3/d3-voronoi/Cell.js | |
| 1632 | d3/d3-voronoi/Circle.js | |
| 72 | d3/d3-voronoi/constant.js | |
| 3415 | d3/d3-voronoi/Diagram.js | |
| 3634 | d3/d3-voronoi/Edge.js | |
| 81 | d3/d3-voronoi/point.js | |
| 5302 | d3/d3-voronoi/RedBlackTree.js | |
| 1420 | d3/d3-voronoi/voronoi.js | |
| 72 | d3/d3-zoom/constant.js | |
| 137 | d3/d3-zoom/event.js | |
| 202 | d3/d3-zoom/noevent.js | |
| 1336 | d3/d3-zoom/transform.js | |
| 12133 | d3/d3-zoom/zoom.js |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <canvas width="960" height="640"></canvas> | |
| <script src="https://d3js.org/d3.v4.min.js"></script> | |
| <script> | |
| var canvas = document.querySelector("canvas"), | |
| context = canvas.getContext("2d"), | |
| width = canvas.width, | |
| height = canvas.height; | |
| d3.csv("d3.csv", function(error, data) { | |
| if (error) throw error; | |
| var root = d3.stratify() | |
| .id(function(d) { return d.path; }) | |
| .parentId(function(d) { return d.path.substring(0, d.path.lastIndexOf("/")); }) | |
| (data); | |
| var nodes = root.descendants(), | |
| links = root.links(); | |
| var simulation = d3.forceSimulation(nodes) | |
| .force("charge", d3.forceManyBody()) | |
| .force("link", d3.forceLink(links).strength(1)) | |
| .force("x", d3.forceX()) | |
| .force("y", d3.forceY()) | |
| .on("tick", ticked); | |
| d3.select(canvas) | |
| .call(d3.drag() | |
| .container(canvas) | |
| .subject(dragsubject) | |
| .on("start", dragstarted) | |
| .on("drag", dragged) | |
| .on("end", dragended)); | |
| function ticked() { | |
| context.clearRect(0, 0, width, height); | |
| context.save(); | |
| context.translate(width / 2, height / 2); | |
| context.beginPath(); | |
| links.forEach(drawLink); | |
| context.strokeStyle = "#aaa"; | |
| context.stroke(); | |
| context.beginPath(); | |
| nodes.forEach(drawNode); | |
| context.fill(); | |
| context.strokeStyle = "#fff"; | |
| context.stroke(); | |
| context.restore(); | |
| } | |
| function dragsubject() { | |
| return simulation.find(d3.event.x - width / 2, d3.event.y - height / 2); | |
| } | |
| function dragstarted() { | |
| if (!d3.event.active) simulation.alphaTarget(0.3).restart(); | |
| d3.event.subject.fx = d3.event.subject.x; | |
| d3.event.subject.fy = d3.event.subject.y; | |
| } | |
| function dragged() { | |
| d3.event.subject.fx = d3.event.x; | |
| d3.event.subject.fy = d3.event.y; | |
| } | |
| function dragended() { | |
| if (!d3.event.active) simulation.alphaTarget(0); | |
| d3.event.subject.fx = null; | |
| d3.event.subject.fy = null; | |
| } | |
| function drawLink(d) { | |
| context.moveTo(d.source.x, d.source.y); | |
| context.lineTo(d.target.x, d.target.y); | |
| } | |
| function drawNode(d) { | |
| context.moveTo(d.x + 3, d.y); | |
| context.arc(d.x, d.y, 3, 0, 2 * Math.PI); | |
| } | |
| }); | |
| </script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment