d3/d3.chart.min.js

1 строка
10 KiB
JavaScript

(function(){function j(a){return a.y}function i(a){return a.x}function h(a,b){var c=b.length-1;b=b.slice().sort(d3.ascending);return d3.range(a).map(function(d){return b[~~(d*c/a)]})}function g(a){var b=a(0);return function(c){return Math.abs(a(c)-b)}}function f(a){return function(b){return"translate("+a(b)+",0)"}}function e(a){return a.measures}function d(a){return a.markers}function c(a){return a.ranges}function b(a){var b=a.length;return[.25,.5,.75].map(function(c){c*=b;return~~c===c?(a[c]+a[c+1])/2:a[Math.round(c)]})}function a(a){return[0,a.length-1]}d3.chart={},d3.chart.box=function(){function k(a){a.each(function(a,b){a=a.map(g).sort(d3.ascending);var k=d3.select(this),l=a.length,m=a[0],n=a[l-1],o=a.quartiles=i(a),p=h&&h.call(this,a,b),q=p&&p.map(function(b){return a[b]}),r=p?d3.range(0,p[0]).concat(d3.range(p[1]+1,l)):d3.range(l),s=d3.scale.linear().domain(f&&f.call(this,a,b)||[m,n]).range([d,0]),t=this.__chart__||d3.scale.linear().domain([0,Infinity]).range(s.range());this.__chart__=s;var u=k.selectAll("line.center").data(q?[q]:[]);u.enter().insert("svg:line","rect").attr("class","center").attr("x1",c/2).attr("y1",function(a){return t(a[0])}).attr("x2",c/2).attr("y2",function(a){return t(a[1])}).style("opacity",1e-6).transition().duration(e).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.transition().duration(e).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.exit().transition().duration(e).style("opacity",1e-6).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}).remove();var v=k.selectAll("rect.box").data([o]);v.enter().append("svg:rect").attr("class","box").attr("x",0).attr("y",function(a){return t(a[2])}).attr("width",c).attr("height",function(a){return t(a[0])-t(a[2])}).transition().duration(e).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])}),v.transition().duration(e).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])});var w=k.selectAll("line.median").data([o[1]]);w.enter().append("svg:line").attr("class","median").attr("x1",0).attr("y1",t).attr("x2",c).attr("y2",t).transition().duration(e).attr("y1",s).attr("y2",s),w.transition().duration(e).attr("y1",s).attr("y2",s);var x=k.selectAll("line.whisker").data(q||[]);x.enter().insert("svg:line","circle, text").attr("class","whisker").attr("x1",0).attr("y1",t).attr("x2",c).attr("y2",t).style("opacity",1e-6).transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1),x.transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1),x.exit().transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1e-6).remove();var y=k.selectAll("circle.outlier").data(r,Number);y.enter().insert("svg:circle","text").attr("class","outlier").attr("r",5).attr("cx",c/2).attr("cy",function(b){return t(a[b])}).style("opacity",1e-6).transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.exit().transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1e-6).remove();var z=j||s.tickFormat(8),A=k.selectAll("text.box").data(o);A.enter().append("svg:text").attr("class","box").attr("dy",".3em").attr("dx",function(a,b){return b&1?6:-6}).attr("x",function(a,b){return b&1?c:0}).attr("y",t).attr("text-anchor",function(a,b){return b&1?"start":"end"}).text(z).transition().duration(e).attr("y",s),A.transition().duration(e).text(z).attr("y",s);var B=k.selectAll("text.whisker").data(q||[]);B.enter().append("svg:text").attr("class","whisker").attr("dy",".3em").attr("dx",6).attr("x",c).attr("y",t).text(z).style("opacity",1e-6).transition().duration(e).attr("y",s).style("opacity",1),B.transition().duration(e).text(z).attr("y",s).style("opacity",1),B.exit().transition().duration(e).attr("y",s).style("opacity",1e-6).remove()})}var c=1,d=1,e=0,f=null,g=Number,h=a,i=b,j=null;k.width=function(a){if(!arguments.length)return c;c=a;return k},k.height=function(a){if(!arguments.length)return d;d=a;return k},k.tickFormat=function(a){if(!arguments.length)return j;j=a;return k},k.duration=function(a){if(!arguments.length)return e;e=a;return k},k.domain=function(a){if(!arguments.length)return f;f=a==null?a:d3.functor(a);return k},k.value=function(a){if(!arguments.length)return g;g=a;return k},k.whiskers=function(a){if(!arguments.length)return h;h=a;return k},k.quartiles=function(a){if(!arguments.length)return i;i=a;return k};return k},d3.chart.bullet=function(){function o(a){a.each(function(a,c){var d=i.call(this,a,c).slice().sort(d3.descending),e=j.call(this,a,c).slice().sort(d3.descending),o=k.call(this,a,c).slice().sort(d3.descending),p=d3.select(this),q=d3.scale.linear().domain([0,Math.max(d[0],e[0],o[0])]).range(b?[l,0]:[0,l]),r=this.__chart__||d3.scale.linear().domain([0,Infinity]).range(q.range());this.__chart__=q;var s=g(r),t=g(q),u=p.selectAll("rect.range").data(d);u.enter().append("svg:rect").attr("class",function(a,b){return"range s"+b}).attr("width",s).attr("height",m).attr("x",b?r:0).transition().duration(h).attr("width",t).attr("x",b?q:0),u.transition().duration(h).attr("x",b?q:0).attr("width",t).attr("height",m);var v=p.selectAll("rect.measure").data(o);v.enter().append("svg:rect").attr("class",function(a,b){return"measure s"+b}).attr("width",s).attr("height",m/3).attr("x",b?r:0).attr("y",m/3).transition().duration(h).attr("width",t).attr("x",b?q:0),v.transition().duration(h).attr("width",t).attr("height",m/3).attr("x",b?q:0).attr("y",m/3);var w=p.selectAll("line.marker").data(e);w.enter().append("svg:line").attr("class","marker").attr("x1",r).attr("x2",r).attr("y1",m/6).attr("y2",m*5/6).transition().duration(h).attr("x1",q).attr("x2",q),w.transition().duration(h).attr("x1",q).attr("x2",q).attr("y1",m/6).attr("y2",m*5/6);var x=n||q.tickFormat(8),y=p.selectAll("g.tick").data(q.ticks(8),function(a){return this.textContent||x(a)}),z=y.enter().append("svg:g").attr("class","tick").attr("transform",f(r)).attr("opacity",1e-6);z.append("svg:line").attr("y1",m).attr("y2",m*7/6),z.append("svg:text").attr("text-anchor","middle").attr("dy","1em").attr("y",m*7/6).text(x),z.transition().duration(h).attr("transform",f(q)).attr("opacity",1);var A=y.transition().duration(h).attr("transform",f(q)).attr("opacity",1);A.select("line").attr("y1",m).attr("y2",m*7/6),A.select("text").attr("y",m*7/6),y.exit().transition().duration(h).attr("transform",f(q)).attr("opacity",1e-6).remove()})}var a="left",b=!1,h=0,i=c,j=d,k=e,l=380,m=30,n=null;o.orient=function(c){if(!arguments.length)return a;a=c,b=a=="right"||a=="bottom";return o},o.ranges=function(a){if(!arguments.length)return i;i=a;return o},o.markers=function(a){if(!arguments.length)return j;j=a;return o},o.measures=function(a){if(!arguments.length)return k;k=a;return o},o.width=function(a){if(!arguments.length)return l;l=a;return o},o.height=function(a){if(!arguments.length)return m;m=a;return o},o.tickFormat=function(a){if(!arguments.length)return n;n=a;return o},o.duration=function(a){if(!arguments.length)return h;h=a;return o};return o},d3.chart.qq=function(){function l(i){i.each(function(i,j){var l=d3.select(this),m=h(f,g.call(this,i,j)),o=h(f,k.call(this,i,j)),p=d&&d.call(this,i,j)||[d3.min(m),d3.max(m)],q=d&&d.call(this,i,j)||[d3.min(o),d3.max(o)],r,s,t=d3.scale.linear().domain(p).range([0,a]),u=d3.scale.linear().domain(q).range([b,0]);this.__chart__?(r=this.__chart__.x,s=this.__chart__.y):(r=d3.scale.linear().domain([0,Infinity]).range(t.range()),s=d3.scale.linear().domain([0,Infinity]).range(u.range())),this.__chart__={x:t,y:u};var v=l.selectAll("line.diagonal").data([null]);v.enter().append("svg:line").attr("class","diagonal").attr("x1",t(q[0])).attr("y1",u(p[0])).attr("x2",t(q[1])).attr("y2",u(p[1])),v.transition().duration(c).attr("x1",t(q[0])).attr("y1",u(p[0])).attr("x2",t(q[1])).attr("y2",u(p[1]));var w=l.selectAll("circle").data(d3.range(f).map(function(a){return{x:m[a],y:o[a]}}));w.enter().append("svg:circle").attr("class","quantile").attr("r",4.5).attr("cx",function(a){return r(a.x)}).attr("cy",function(a){return s(a.y)}).style("opacity",1e-6).transition().duration(c).attr("cx",function(a){return t(a.x)}).attr("cy",function(a){return u(a.y)}).style("opacity",1),w.transition().duration(c).attr("cx",function(a){return t(a.x)}).attr("cy",function(a){return u(a.y)}).style("opacity",1),w.exit().transition().duration(c).attr("cx",function(a){return t(a.x)}).attr("cy",function(a){return u(a.y)}).style("opacity",1e-6).remove();var z=e||t.tickFormat(4),A=e||u.tickFormat(4),B=function(a){return"translate("+t(a)+","+b+")"},C=function(a){return"translate(0,"+u(a)+")"},D=l.selectAll("g.x.tick").data(t.ticks(4),function(a){return this.textContent||z(a)}),E=D.enter().append("svg:g").attr("class","x tick").attr("transform",function(a){return"translate("+r(a)+","+b+")"}).attr("opacity",1e-6);E.append("svg:line").attr("y1",0).attr("y2",-6),E.append("svg:text").attr("text-anchor","middle").attr("dy","1em").text(z),E.transition().duration(c).attr("transform",B).attr("opacity",1),D.transition().duration(c).attr("transform",B).attr("opacity",1),D.exit().transition().duration(c).attr("transform",B).attr("opacity",1e-6).remove();var F=l.selectAll("g.y.tick").data(u.ticks(4),function(a){return this.textContent||A(a)}),G=F.enter().append("svg:g").attr("class","y tick").attr("transform",function(a){return"translate(0,"+s(a)+")"}).attr("opacity",1e-6);G.append("svg:line").attr("x1",0).attr("x2",6),G.append("svg:text").attr("text-anchor","end").attr("dx","-.5em").attr("dy",".3em").text(A),G.transition().duration(c).attr("transform",C).attr("opacity",1),F.transition().duration(c).attr("transform",C).attr("opacity",1),F.exit().transition().duration(c).attr("transform",C).attr("opacity",1e-6).remove()})}var a=1,b=1,c=0,d=null,e=null,f=100,g=i,k=j;l.width=function(b){if(!arguments.length)return a;a=b;return l},l.height=function(a){if(!arguments.length)return b;b=a;return l},l.duration=function(a){if(!arguments.length)return c;c=a;return l},l.domain=function(a){if(!arguments.length)return d;d=a==null?a:d3.functor(a);return l},l.count=function(a){if(!arguments.length)return f;f=a;return l},l.x=function(a){if(!arguments.length)return g;g=a;return l},l.y=function(a){if(!arguments.length)return k;k=a;return l},l.tickFormat=function(a){if(!arguments.length)return e;e=a;return l};return l}})()