d3-cluster
Version:
d3 clustering layout
2 lines • 1.72 kB
JavaScript
// https://github.com/stormpython/d3-cluster#readme Version 1.0.0-alpha.8. Copyright 2016 undefined.
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("d3-scale"),require("lodash")):"function"==typeof define&&define.amd?define(["exports","d3-scale","lodash"],t):t(n.d3=n.d3||{},n.d3,n.lodash)}(this,function(n,t,e){"use strict";function r(){function n(n,t){return l(o.call(this,n,t))}function r(n,t){return s(c.call(this,n,t))}function u(t){var u=[],i=[],o=t.sort(function(n,t){return a.call(this,t)-a.call(this,n)}).map(function(t,u){return{x:n.call(this,t,u),y:r.call(this,t,u),radius:a.call(this,t,u),point:e.cloneDeep(t)}}),c=e.cloneDeep(o);return o.forEach(function(n){i.indexOf(n)===-1&&(n.overlap=[],u.push(n),c.forEach(function(t){if(!e.isEqual(t,n)){var r=Math.sqrt(Math.pow(Math.abs(t.x-n.x),2)+Math.pow(Math.abs(t.y-n.y),2));r<t.radius+n.radius&&(t.clustered=!0,n.overlap.push(t),i.push(t))}}),c=c.filter(function(t){return n.overlap.every(function(n){return!e.isEqual(n,t)})}))}),u}function i(n){return u(n)}var o=function(n){return n[0]},c=function(n){return n[1]},a=function(n){return n[2]},l=t.scaleLinear(),s=t.scaleLinear(),f=function(n,t){return(t+n)/2};return i.x=function(n){return arguments.length?(o=e.isFunction(n)?n:o,i):o},i.y=function(n){return arguments.length?(c=e.isFunction(n)?n:c,i):c},i.radius=function(n){return arguments.length?(a=e.isFunction(n)?n:a,i):a},i.centroid=function(n){return arguments.length?(f=e.isFunction(n)?n:f,i):f},i.xScale=function(n){return arguments.length?(l=e.isFunction(n)?n:l,i):l},i.yScale=function(n){return arguments.length?(s=e.isFunction(n)?n:s,i):s},i}n.cluster=r,Object.defineProperty(n,"__esModule",{value:!0})});