The tick format function doesn't have to be used with ticks, though. It's also
for convenient for determining an appropriate precision for any value label.
This commit is contained in:
Michael Bostock 2010-10-22 13:36:48 -07:00
Родитель d7bc33eafd
Коммит 5e381ba73e
4 изменённых файлов: 74 добавлений и 46 удалений

26
d3.js поставляемый
Просмотреть файл

@ -664,24 +664,38 @@ d3.linear = function() {
};
// TODO Dates? Ugh.
scale.ticks = function(m) {
function ticks(m) {
var start = Math.min(x0, x1),
stop = Math.max(x0, x1),
span = stop - start,
step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),
err = m / (span / step),
ticks = [],
digits;
// Filter ticks to get closer to the desired count.
if (err <= .15) step *= 10;
else if (err <= .35) step *= 5;
else if (err <= .75) step *= 2;
// Round start and stop values to step interval.
start = Math.ceil(start / step) * step;
stop = Math.floor(stop / step) * step + step * .5; // inclusive
// Determine the precision for tick labels.
digits = Math.max(0, -Math.floor(Math.log(step) / Math.LN10 + .01));
do {
ticks.push({value: start, label: start.toFixed(digits)});
} while ((start += step) < stop);
return ticks;
return {
range: function() { return d3.range(start, stop, step); },
format: function(d) { return d.toFixed(digits); }
};
}
scale.ticks = function(m) {
return ticks(m).range();
};
scale.tickFormat = function(m) {
return ticks(m).format;
};
return scale;

62
d3.min.js поставляемый
Просмотреть файл

@ -1,39 +1,39 @@
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(C){function z(){}z.prototype=C;return new z};
(function(C){function z(a){return function(f){return 1-a(1-f)}}function O(a){return function(f){return 0.5*(f<0.5?a(2*f):2-a(2-2*f))}}function V(a){return a}function D(a){return function(f){return Math.pow(f,a)}}function W(a){return 1-Math.cos(a*Math.PI/2)}function X(a){return a?Math.pow(2,10*(a-1))-0.0010:0}function Y(a){return 1-Math.sqrt(1-a*a)}function Z(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375}
function E(a){var f,d,g,e,b;if(e=/([a-z]+)\((.*)\)/i.exec(a)){b=e[2].split(",");switch(e[1]){case "hsl":return P(parseFloat(b[0]),parseFloat(b[1])/100,parseFloat(b[2])/100);case "rgb":return{r:F(b[0]),g:F(b[1]),b:F(b[2])}}}if(e=v[a])return e;if(a==null)return v.black;if(a.charAt(0)=="#"){if(a.length==4){f=a.charAt(1);f+=f;d=a.charAt(2);d+=d;g=a.charAt(3);g+=g}else if(a.length==7){f=a.substring(1,3);d=a.substring(3,5);g=a.substring(5,7)}f=parseInt(f,16);d=parseInt(d,16);g=parseInt(g,16)}return{r:f,
g:d,b:g}}function P(a,f,d){function g(c){if(c>360)c-=360;else if(c<0)c+=360;if(c<60)return e+(b-e)*c/60;if(c<180)return b;if(c<240)return e+(b-e)*(240-c)/60;return e}var e,b;a%=360;if(a<0)a+=360;f=f<0?0:f>1?1:f;d=d<0?0:d>1?1:d;b=d<=0.5?d*(1+f):d+f-d*f;e=2*d-b;return{r:Math.round(g(a+120)*255),g:Math.round(g(a)*255),b:Math.round(g(a-120)*255)}}function F(a){var f=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(f*2.55):f}function Q(){function a(g,e){var b=Object.create(f);b.pop=g;b.data=function(c){var h,
i={impl:R,bind:$,value:c,actions:[],enterActions:[],exitActions:[]};e.push(i);h=a(b,i.actions);h.enter=a(b,i.enterActions);h.exit=a(b,i.exitActions);h.key=function(l,n){i.key={name:A.qualify(l),value:n};return h};return h};b.attr=function(c,h){e.push({impl:aa,bind:ba,name:A.qualify(c),value:h});return b};b.style=function(c,h,i){e.push({impl:ca,bind:da,name:c,value:h,priority:arguments.length<3?null:i});return b};b.append=function(c,h){var i={impl:ea,name:A.qualify(c),value:h,actions:[]};e.push(i);
return a(b,i.actions)};b.remove=function(c){e.push({impl:fa,selector:c});return b};b.text=function(c){e.push({impl:ga,value:c});return b};b.on=function(c){c={impl:ha,type:c,actions:[]};e.push(c);return a(b,c.actions)};b.bind=function(c,h){e.push({impl:ia,type:c,listener:h});return b};b.filter=function(c){c={impl:S,bind:S,filter:c,actions:[]};e.push(c);return a(b,c.actions)};b.select=function(c){c={impl:G,bind:ja,selector:c,actions:[]};e.push(c);return a(b,c.actions)};b.selectAll=function(c){c={impl:H,
bind:ka,selector:c,actions:[]};e.push(c);return a(b,c.actions)};b.transition=function(){var c,h={impl:la,actions:[],endActions:[],ease:k.ease("cubic-in-out"),delay:0,duration:250};e.push(h);c=a(b,h.actions);c.end=a(b,h.endActions);c.ease=function(i){h.ease=typeof i=="string"?k.ease(i):i;return c};c.delay=function(i){h.delay=i;return c};c.duration=function(i){h.duration=i;return c};return c};return b}var f={},d=[];f.select=function(g){g={impl:G,selector:g,actions:[]};d.push(g);return a(f,g.actions)};
f.selectAll=function(g){g={impl:H,selector:g,actions:[]};d.push(g);return a(f,g.actions)};f.apply=function(){j.unshift(null);t(d,[{node:document,index:0}]);j.shift();return f};return f}function t(a,f){var d=a.length,g;for(g=0;g<d;++g)a[g].impl(f,t)}function ea(a,f){var d=a.length,g=this.name,e=[],b,c,h;if(g.local)for(b=0;b<d;++b){e.push(h=Object.create(c=a[b]));h.node=(h.parent=c).node.appendChild(document.createElementNS(g.space,g.local))}else for(b=0;b<d;++b){e.push(h=Object.create(c=a[b]));h.node=
(h.parent=c).node.appendChild(document.createElement(g))}f(this.actions,e)}function aa(a){var f=a.length,d=this.name,g=this.value,e,b,c;if(d.local)if(g==null)for(e=0;e<f;++e)a[e].node.removeAttributeNS(d.space,d.local);else if(typeof g=="function")for(e=0;e<f;++e){j[0]=(b=a[e]).data;c=g.apply(b,j);c==null?b.node.removeAttributeNS(d.space,d.local):b.node.setAttributeNS(d.space,d.local,c)}else for(e=0;e<f;++e)a[e].node.setAttributeNS(d.space,d.local,g);else if(g==null)for(e=0;e<f;++e)a[e].node.removeAttribute(d);
else if(typeof g=="function")for(e=0;e<f;++e){j[0]=(b=a[e]).data;c=g.apply(b,j);c==null?b.node.removeAttribute(d):b.node.setAttribute(d,c)}else for(e=0;e<f;++e)a[e].node.setAttribute(d,g)}function ba(a){var f=a.length,d=this.name,g=this.bound||(this.bound=this.value),e="attr."+(d.local?d.space+":"+d.local:d),b,c;if(g&&g.bind){if(d.local)for(b=0;b<f;++b){(c=a[b]).value=c.node.getAttributeNS(d.space,d.local);c.name=d.space+":"+d.local;j[0]=c.data;c[e]=g.bind.apply(c,j);delete c.value;delete c.name}else for(b=
0;b<f;++b){(c=a[b]).value=c.node.getAttribute(d);c.name=d;j[0]=c.data;c[e]=g.bind.apply(c,j);delete c.value;delete c.name}this.value=function(){return this[e].apply(this,arguments)}}}function ia(a){function f(i,l){return function(n){var m=j;try{k.event=n;h[0]=l;e.apply(i,j=h)}finally{delete k.event;j=m}}}var d=a.length,g="on"+this.type,e=this.listener,b=0,c,h=j.slice();if(e)for(;b<d;++b){c=a[b];c.node[g]=f(c,c.data)}else for(;b<d;++b)a[b].node[g]=null}function R(a,f){var d=this.value,g=a.length,e,
b=this.key,c,h,i,l,n=[],m=[],w=[],p,r,o;if(typeof d=="function"){c=j.shift();d=d.apply(null,j);j.unshift(c)}e=d.length;if(b){c=b.name;h=b.value;p={};r={};o={};if(c.local)for(b=0;b<g;++b){if(l=a[b].node){i=l.getAttributeNS(c.space,c.local);if(i!=null)p[i]=l}}else for(b=0;b<g;++b)if(l=a[b].node){i=l.getAttribute(c);if(i!=null)p[i]=l}for(b=0;b<e;++b){j[0]=c=d[b];i=h.apply(null,j);if(i!=null){r[i]=c;o[i]=b}}for(i in r){c=r[i];b=o[i];(l=p[i])?m.push({node:l,data:c,key:i,index:b}):n.push({node:a.parent.node,
data:c,key:i,index:b})}for(i in p)i in r||w.push({node:p[i]})}else{i=e<g?e:g;for(b=0;b<i;++b){(l=a[b]).data=d[b];if(l.node)m.push(l);else{l.node=l.parent.node;n.push(l)}}for(i=b;i<e;++i)n.push({node:a.parent.node,data:d[i],index:i});for(i=b;i<g;++i)w.push(a[i])}f(this.enterActions,n);f(this.actions,m);f(this.exitActions,w)}function $(a,f){var d=a.length,g=this.bound||(this.bound=this.value),e,b,c;if(g&&g.bind){e=[];for(b=0;b<d;++b){j[0]=(c=a[b]).data;c.value=c.data;c.data_=g.bind.apply(c,j);delete c.value}this.value=
function(){j.unshift(null);for(b=0;b<d;++b){j[0]=(c=a[b]).data;e[b]=c.data_.apply(c,j)}j.shift();return e}}else R.call(this,a,f)}function fa(a){var f=a.length,d=this.selector,g,e,b,c,h;if(d==null)for(e=0;e<f;++e){h=a[e].node;h.parentNode.removeChild(h)}else for(e=0;e<f;++e){g=a[e].node.querySelectorAll(d);b=0;for(c=g.length;b<c;b++){h=g[b];h.parentNode.removeChild(h)}}}function ha(a){function f(l){return function(n){var m=j;try{j=i;k.event=n;for(c=0;c<g;++c)d[c].impl(l,t)}finally{delete k.event;j=
m}}}var d=this.actions,g=d.length,e=a.length,b="on"+this.type,c=0,h,i=j.slice();if(g)for(;c<e;++c){h=a[c];h.node[b]=f([h])}else for(;c<e;++c)a[c].node[b]=null}function S(a,f){var d=[],g=a.length,e=this.filter,b,c;for(b=0;b<g;++b){j[0]=(c=a[b]).data;e.apply(c,j)&&d.push(c)}f(this.actions,d)}function G(a,f){var d=[],g=a.length,e=this.selector,b,c,h,i;for(b=0;b<g;++b){i=(c=a[b]).node.querySelector(e);d.push(h=Object.create(c));h.parent=c;h.node=i}f(this.actions,d)}function ja(a,f){var d=this;G.call(this,
a,function(g,e){f(g,e);d.impl=function(b,c){c(g,e)}})}function H(a,f){var d=a.length,g=this.selector,e,b;j.unshift(null);for(e=0;e<d;++e){j[1]=(b=a[e]).data;if(b.node){var c=f,h=this.actions,i=b.node.querySelectorAll(g),l=[],n=0,m=i.length;for(l.parent=b;n<m;n++)l.push({node:i[n],index:n});c(h,l)}}j.shift()}function ka(a,f){var d=a.length,g,e;H.call(this,a,function(b,c){f(b,c.parent.selectAll=c)});this.impl=function(b,c){j.unshift(null);g=0;for(d=b.length;g<d;++g){j[1]=(e=b[g]).data;c(this.actions,
e.selectAll)}j.shift()}}function ca(a){var f=a.length,d=this.name,g=this.value,e=this.priority,b,c,h;if(g==null)for(b=0;b<f;++b)a[b].node.style.removeProperty(d);else if(typeof g=="function")for(b=0;b<f;++b){c=a[b];j[0]=c.data;h=g.apply(c,j);h==null?c.node.style.removeProperty(d):c.node.style.setProperty(d,h,e)}else for(b=0;b<f;++b)a[b].node.style.setProperty(d,g,e)}function da(a){var f=a.length,d=this.name,g=this.bound||(this.bound=this.value),e="style."+d,b,c;if(g&&g.bind){for(b=0;b<f;++b){(c=a[b]).value=
c.node.style.getPropertyValue(d);c.name=d;j[0]=c.data;c[e]=g.bind.apply(c,j);delete c.value;delete c.name}this.value=function(){return this[e].apply(this,arguments)}}}function ga(a){var f=a.length,d=this.value,g,e,b;if(typeof d=="function")for(g=0;g<f;++g){e=a[g];j[0]=e.data;b=d.apply(e,j);for(e=e.node;e.lastChild;)e.removeChild(e.lastChild);e.appendChild(document.createTextNode(b))}else for(g=0;g<f;++g){for(e=a[g].node;e.lastChild;)e.removeChild(e.lastChild);e.appendChild(document.createTextNode(d))}}
function la(a){function f(x){for(o=0;o<r;++o)(q=a[o]).node.interval=x}function d(){var x=j,u=a.filter(function(ma){return ma.node.interval==m}),B=u.length,I=Date.now(),y,T=true;try{j=J;for(o=0;o<B;++o){q=u[o];y=(I-c-q.delay)/l;if(!(y<0)){if(y>1)y=1;else T=false;k.time=n(y);for(s=0;s<w;++s)e[s].impl([q],t);if(y==1){for(s=0;s<p;++s)b[s].impl([q],t);q.delay=Infinity}}}}finally{delete k.time;j=x}T&&clearInterval(m)}function g(){var x=j,u=(Date.now()-c-h)/l,B=a.filter(function(I){return I.node.interval==
m});try{j=J;k.time=n(u<0?0:u>1?1:u);for(o=0;o<w;++o)e[o].impl(B,t)}finally{delete k.time;j=x}if(u>=1){clearInterval(m);try{j=J;for(o=0;o<p;++o)b[o].impl(B,t)}finally{j=x}}}var e=this.actions,b=this.endActions,c=Date.now(),h=this.delay,i=Infinity,l=this.duration,n=this.ease,m,w=e.length,p=b.length,r=a.length,o,s,q,K,J=j.slice();if(typeof h=="function"){for(o=0;o<r;++o){j[0]=(q=a[o]).data;K=q.delay=h.apply(q,j);if(K<i)i=K}setTimeout(function(){f(m=setInterval(d,24))},i)}else setTimeout(function(){f(m=
setInterval(g,24))},h);try{k.time=0;U(e,a)}finally{delete k.time}}function U(a,f){var d=a.length,g,e;for(e=0;e<d;++e){g=a[e];g.bind&&g.bind(f,U)}}var k=C.d3={};k.version="0.0.0";k.range=function(a,f,d){if(arguments.length==1){f=a;a=0}if(d==null)d=1;if((f-a)/d==Infinity)throw Error("infinite range");var g=[],e=-1,b;if(d<0)for(;(b=a+d*++e)>f;)g.push(b);else for(;(b=a+d*++e)<f;)g.push(b);return g};var A={prefix:{svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",
xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},resolve:function(a){return A.prefix[a]||null},qualify:function(a){var f=a.indexOf(":");return f<0?a:{space:A.prefix[a.substring(0,f)],local:a.substring(f+1)}}};k.dispatch=function(a){var f={};a.on=function(d,g){for(var e=f[d]||(f[d]=[]),b=0;b<e.length;b++)if(e[b].handler==g)return a;e.push({handler:g,on:true});return a};a.off=function(d,g){var e=f[d];if(e)for(var b=0;b<e.length;b++){var c=e[b];if(c.handler==g){c.on=
function E(a){var f,d,g,e,b;if(e=/([a-z]+)\((.*)\)/i.exec(a)){b=e[2].split(",");switch(e[1]){case "hsl":return P(parseFloat(b[0]),parseFloat(b[1])/100,parseFloat(b[2])/100);case "rgb":return{r:F(b[0]),g:F(b[1]),b:F(b[2])}}}if(e=w[a])return e;if(a==null)return w.black;if(a.charAt(0)=="#"){if(a.length==4){f=a.charAt(1);f+=f;d=a.charAt(2);d+=d;g=a.charAt(3);g+=g}else if(a.length==7){f=a.substring(1,3);d=a.substring(3,5);g=a.substring(5,7)}f=parseInt(f,16);d=parseInt(d,16);g=parseInt(g,16)}return{r:f,
g:d,b:g}}function P(a,f,d){function g(c){if(c>360)c-=360;else if(c<0)c+=360;if(c<60)return e+(b-e)*c/60;if(c<180)return b;if(c<240)return e+(b-e)*(240-c)/60;return e}var e,b;a%=360;if(a<0)a+=360;f=f<0?0:f>1?1:f;d=d<0?0:d>1?1:d;b=d<=0.5?d*(1+f):d+f-d*f;e=2*d-b;return{r:Math.round(g(a+120)*255),g:Math.round(g(a)*255),b:Math.round(g(a-120)*255)}}function F(a){var f=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(f*2.55):f}function Q(){function a(g,e){var b=Object.create(f);b.pop=g;b.data=function(c){var i,
h={impl:R,bind:$,value:c,actions:[],enterActions:[],exitActions:[]};e.push(h);i=a(b,h.actions);i.enter=a(b,h.enterActions);i.exit=a(b,h.exitActions);i.key=function(l,n){h.key={name:A.qualify(l),value:n};return i};return i};b.attr=function(c,i){e.push({impl:aa,bind:ba,name:A.qualify(c),value:i});return b};b.style=function(c,i,h){e.push({impl:ca,bind:da,name:c,value:i,priority:arguments.length<3?null:h});return b};b.append=function(c,i){var h={impl:ea,name:A.qualify(c),value:i,actions:[]};e.push(h);
return a(b,h.actions)};b.remove=function(c){e.push({impl:fa,selector:c});return b};b.text=function(c){e.push({impl:ga,value:c});return b};b.on=function(c){c={impl:ha,type:c,actions:[]};e.push(c);return a(b,c.actions)};b.bind=function(c,i){e.push({impl:ia,type:c,listener:i});return b};b.filter=function(c){c={impl:S,bind:S,filter:c,actions:[]};e.push(c);return a(b,c.actions)};b.select=function(c){c={impl:G,bind:ja,selector:c,actions:[]};e.push(c);return a(b,c.actions)};b.selectAll=function(c){c={impl:H,
bind:ka,selector:c,actions:[]};e.push(c);return a(b,c.actions)};b.transition=function(){var c,i={impl:la,actions:[],endActions:[],ease:j.ease("cubic-in-out"),delay:0,duration:250};e.push(i);c=a(b,i.actions);c.end=a(b,i.endActions);c.ease=function(h){i.ease=typeof h=="string"?j.ease(h):h;return c};c.delay=function(h){i.delay=h;return c};c.duration=function(h){i.duration=h;return c};return c};return b}var f={},d=[];f.select=function(g){g={impl:G,selector:g,actions:[]};d.push(g);return a(f,g.actions)};
f.selectAll=function(g){g={impl:H,selector:g,actions:[]};d.push(g);return a(f,g.actions)};f.apply=function(){k.unshift(null);u(d,[{node:document,index:0}]);k.shift();return f};return f}function u(a,f){var d=a.length,g;for(g=0;g<d;++g)a[g].impl(f,u)}function ea(a,f){var d=a.length,g=this.name,e=[],b,c,i;if(g.local)for(b=0;b<d;++b){e.push(i=Object.create(c=a[b]));i.node=(i.parent=c).node.appendChild(document.createElementNS(g.space,g.local))}else for(b=0;b<d;++b){e.push(i=Object.create(c=a[b]));i.node=
(i.parent=c).node.appendChild(document.createElement(g))}f(this.actions,e)}function aa(a){var f=a.length,d=this.name,g=this.value,e,b,c;if(d.local)if(g==null)for(e=0;e<f;++e)a[e].node.removeAttributeNS(d.space,d.local);else if(typeof g=="function")for(e=0;e<f;++e){k[0]=(b=a[e]).data;c=g.apply(b,k);c==null?b.node.removeAttributeNS(d.space,d.local):b.node.setAttributeNS(d.space,d.local,c)}else for(e=0;e<f;++e)a[e].node.setAttributeNS(d.space,d.local,g);else if(g==null)for(e=0;e<f;++e)a[e].node.removeAttribute(d);
else if(typeof g=="function")for(e=0;e<f;++e){k[0]=(b=a[e]).data;c=g.apply(b,k);c==null?b.node.removeAttribute(d):b.node.setAttribute(d,c)}else for(e=0;e<f;++e)a[e].node.setAttribute(d,g)}function ba(a){var f=a.length,d=this.name,g=this.bound||(this.bound=this.value),e="attr."+(d.local?d.space+":"+d.local:d),b,c;if(g&&g.bind){if(d.local)for(b=0;b<f;++b){(c=a[b]).value=c.node.getAttributeNS(d.space,d.local);c.name=d.space+":"+d.local;k[0]=c.data;c[e]=g.bind.apply(c,k);delete c.value;delete c.name}else for(b=
0;b<f;++b){(c=a[b]).value=c.node.getAttribute(d);c.name=d;k[0]=c.data;c[e]=g.bind.apply(c,k);delete c.value;delete c.name}this.value=function(){return this[e].apply(this,arguments)}}}function ia(a){function f(h,l){return function(n){var o=k;try{j.event=n;i[0]=l;e.apply(h,k=i)}finally{delete j.event;k=o}}}var d=a.length,g="on"+this.type,e=this.listener,b=0,c,i=k.slice();if(e)for(;b<d;++b){c=a[b];c.node[g]=f(c,c.data)}else for(;b<d;++b)a[b].node[g]=null}function R(a,f){var d=this.value,g=a.length,e,
b=this.key,c,i,h,l,n=[],o=[],p=[],q,r,m;if(typeof d=="function"){c=k.shift();d=d.apply(null,k);k.unshift(c)}e=d.length;if(b){c=b.name;i=b.value;q={};r={};m={};if(c.local)for(b=0;b<g;++b){if(l=a[b].node){h=l.getAttributeNS(c.space,c.local);if(h!=null)q[h]=l}}else for(b=0;b<g;++b)if(l=a[b].node){h=l.getAttribute(c);if(h!=null)q[h]=l}for(b=0;b<e;++b){k[0]=c=d[b];h=i.apply(null,k);if(h!=null){r[h]=c;m[h]=b}}for(h in r){c=r[h];b=m[h];(l=q[h])?o.push({node:l,data:c,key:h,index:b}):n.push({node:a.parent.node,
data:c,key:h,index:b})}for(h in q)h in r||p.push({node:q[h]})}else{h=e<g?e:g;for(b=0;b<h;++b){(l=a[b]).data=d[b];if(l.node)o.push(l);else{l.node=l.parent.node;n.push(l)}}for(h=b;h<e;++h)n.push({node:a.parent.node,data:d[h],index:h});for(h=b;h<g;++h)p.push(a[h])}f(this.enterActions,n);f(this.actions,o);f(this.exitActions,p)}function $(a,f){var d=a.length,g=this.bound||(this.bound=this.value),e,b,c;if(g&&g.bind){e=[];for(b=0;b<d;++b){k[0]=(c=a[b]).data;c.value=c.data;c.data_=g.bind.apply(c,k);delete c.value}this.value=
function(){k.unshift(null);for(b=0;b<d;++b){k[0]=(c=a[b]).data;e[b]=c.data_.apply(c,k)}k.shift();return e}}else R.call(this,a,f)}function fa(a){var f=a.length,d=this.selector,g,e,b,c,i;if(d==null)for(e=0;e<f;++e){i=a[e].node;i.parentNode.removeChild(i)}else for(e=0;e<f;++e){g=a[e].node.querySelectorAll(d);b=0;for(c=g.length;b<c;b++){i=g[b];i.parentNode.removeChild(i)}}}function ha(a){function f(l){return function(n){var o=k;try{k=h;j.event=n;for(c=0;c<g;++c)d[c].impl(l,u)}finally{delete j.event;k=
o}}}var d=this.actions,g=d.length,e=a.length,b="on"+this.type,c=0,i,h=k.slice();if(g)for(;c<e;++c){i=a[c];i.node[b]=f([i])}else for(;c<e;++c)a[c].node[b]=null}function S(a,f){var d=[],g=a.length,e=this.filter,b,c;for(b=0;b<g;++b){k[0]=(c=a[b]).data;e.apply(c,k)&&d.push(c)}f(this.actions,d)}function G(a,f){var d=[],g=a.length,e=this.selector,b,c,i,h;for(b=0;b<g;++b){h=(c=a[b]).node.querySelector(e);d.push(i=Object.create(c));i.parent=c;i.node=h}f(this.actions,d)}function ja(a,f){var d=this;G.call(this,
a,function(g,e){f(g,e);d.impl=function(b,c){c(g,e)}})}function H(a,f){var d=a.length,g=this.selector,e,b;k.unshift(null);for(e=0;e<d;++e){k[1]=(b=a[e]).data;if(b.node){var c=f,i=this.actions,h=b.node.querySelectorAll(g),l=[],n=0,o=h.length;for(l.parent=b;n<o;n++)l.push({node:h[n],index:n});c(i,l)}}k.shift()}function ka(a,f){var d=a.length,g,e;H.call(this,a,function(b,c){f(b,c.parent.selectAll=c)});this.impl=function(b,c){k.unshift(null);g=0;for(d=b.length;g<d;++g){k[1]=(e=b[g]).data;c(this.actions,
e.selectAll)}k.shift()}}function ca(a){var f=a.length,d=this.name,g=this.value,e=this.priority,b,c,i;if(g==null)for(b=0;b<f;++b)a[b].node.style.removeProperty(d);else if(typeof g=="function")for(b=0;b<f;++b){c=a[b];k[0]=c.data;i=g.apply(c,k);i==null?c.node.style.removeProperty(d):c.node.style.setProperty(d,i,e)}else for(b=0;b<f;++b)a[b].node.style.setProperty(d,g,e)}function da(a){var f=a.length,d=this.name,g=this.bound||(this.bound=this.value),e="style."+d,b,c;if(g&&g.bind){for(b=0;b<f;++b){(c=a[b]).value=
c.node.style.getPropertyValue(d);c.name=d;k[0]=c.data;c[e]=g.bind.apply(c,k);delete c.value;delete c.name}this.value=function(){return this[e].apply(this,arguments)}}}function ga(a){var f=a.length,d=this.value,g,e,b;if(typeof d=="function")for(g=0;g<f;++g){e=a[g];k[0]=e.data;b=d.apply(e,k);for(e=e.node;e.lastChild;)e.removeChild(e.lastChild);e.appendChild(document.createTextNode(b))}else for(g=0;g<f;++g){for(e=a[g].node;e.lastChild;)e.removeChild(e.lastChild);e.appendChild(document.createTextNode(d))}}
function la(a){function f(x){for(m=0;m<r;++m)(s=a[m]).node.interval=x}function d(){var x=k,v=a.filter(function(ma){return ma.node.interval==o}),B=v.length,I=Date.now(),y,T=true;try{k=J;for(m=0;m<B;++m){s=v[m];y=(I-c-s.delay)/l;if(!(y<0)){if(y>1)y=1;else T=false;j.time=n(y);for(t=0;t<p;++t)e[t].impl([s],u);if(y==1){for(t=0;t<q;++t)b[t].impl([s],u);s.delay=Infinity}}}}finally{delete j.time;k=x}T&&clearInterval(o)}function g(){var x=k,v=(Date.now()-c-i)/l,B=a.filter(function(I){return I.node.interval==
o});try{k=J;j.time=n(v<0?0:v>1?1:v);for(m=0;m<p;++m)e[m].impl(B,u)}finally{delete j.time;k=x}if(v>=1){clearInterval(o);try{k=J;for(m=0;m<q;++m)b[m].impl(B,u)}finally{k=x}}}var e=this.actions,b=this.endActions,c=Date.now(),i=this.delay,h=Infinity,l=this.duration,n=this.ease,o,p=e.length,q=b.length,r=a.length,m,t,s,K,J=k.slice();if(typeof i=="function"){for(m=0;m<r;++m){k[0]=(s=a[m]).data;K=s.delay=i.apply(s,k);if(K<h)h=K}setTimeout(function(){f(o=setInterval(d,24))},h)}else setTimeout(function(){f(o=
setInterval(g,24))},i);try{j.time=0;U(e,a)}finally{delete j.time}}function U(a,f){var d=a.length,g,e;for(e=0;e<d;++e){g=a[e];g.bind&&g.bind(f,U)}}var j=C.d3={};j.version="0.0.0";j.range=function(a,f,d){if(arguments.length==1){f=a;a=0}if(d==null)d=1;if((f-a)/d==Infinity)throw Error("infinite range");var g=[],e=-1,b;if(d<0)for(;(b=a+d*++e)>f;)g.push(b);else for(;(b=a+d*++e)<f;)g.push(b);return g};var A={prefix:{svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",
xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},resolve:function(a){return A.prefix[a]||null},qualify:function(a){var f=a.indexOf(":");return f<0?a:{space:A.prefix[a.substring(0,f)],local:a.substring(f+1)}}};j.dispatch=function(a){var f={};a.on=function(d,g){for(var e=f[d]||(f[d]=[]),b=0;b<e.length;b++)if(e[b].handler==g)return a;e.push({handler:g,on:true});return a};a.off=function(d,g){var e=f[d];if(e)for(var b=0;b<e.length;b++){var c=e[b];if(c.handler==g){c.on=
false;e.splice(b,1);break}}return a};a.dispatch=function(d){var g=f[d.type];if(g){g=g.slice();for(var e=0;e<g.length;e++){var b=g[e];b.on&&b.handler.call(a,d)}}};return a};var na=D(2),oa=D(3),pa={linear:function(){return V},poly:D,quad:function(){return na},cubic:function(){return oa},sin:function(){return W},exp:function(){return X},circle:function(){return Y},elastic:function(a,f){var d;if(arguments.length<2)f=0.45;if(arguments.length<1){a=1;d=f/4}else d=f/(2*Math.PI)*Math.asin(1/a);return function(g){return 1+
a*Math.pow(2,10*-g)*Math.sin(-(g+d)*2*Math.PI/f)}},back:function(a){a||(a=1.70158);return function(f){return f*f*((a+1)*f-a)}},bounce:function(){return Z}},qa={"in":function(a){return a},out:z,"in-out":O,"out-int":function(a){return O(z(a))}};k.ease=function(a){var f=a.indexOf("-"),d=f>=0?a.substring(0,f):a;f=f>=0?a.substring(f+1):"in";return qa[f](pa[d].apply(null,Array.prototype.slice.call(arguments,1)))};k.interpolate=function(a,f){if(typeof f=="number")return k.interpolateNumber(+a,f);if(typeof f==
"string")return f in v||/^(#|rgb\(|hsl\()/.test(f)?k.interpolateRgb(String(a),f):k.interpolateString(String(a),f);if(f instanceof Array)return k.interpolateArray(a,f);return k.interpolateObject(a,f)};k.interpolateNumber=function(a,f){f-=a;return function(d){return a+f*d}};k.interpolateString=function(a,f){var d,g,e=0,b=[],c=[],h,i;for(g=0;d=L.exec(f);++g){d.index&&b.push(f.substring(e,d.index));c.push({i:b.length,x:d[0]});b.push(null);e=L.lastIndex}e<f.length&&b.push(f.substring(e));g=0;for(h=c.length;(d=
L.exec(a))&&g<h;++g){i=c[g];if(i.x==d[0]){if(i.i)if(b[i.i+1]==null){b[i.i-1]+=i.x;b.splice(i.i,1);for(d=g+1;d<h;++d)c[d].i--}else{b[i.i-1]+=i.x+b[i.i+1];b.splice(i.i,2);for(d=g+1;d<h;++d)c[d].i-=2}else if(b[i.i+1]==null)b[i.i]=i.x;else{b[i.i]=i.x+b[i.i+1];b.splice(i.i+1,1);for(d=g+1;d<h;++d)c[d].i--}c.splice(g,1);h--;g--}else i.x=k.interpolateNumber(parseFloat(d[0]),parseFloat(i.x))}for(;g<h;){i=c.pop();if(b[i.i+1]==null)b[i.i]=i.x;else{b[i.i]=i.x+b[i.i+1];b.splice(i.i+1,1)}h--}if(b.length==1)return b[0]==
null?c[0].x:function(){return f};return function(l){for(g=0;g<h;++g)b[(i=c[g]).i]=i.x(l);return b.join("")}};k.interpolateRgb=function(a,f){a=E(a);f=E(f);var d=a.r,g=a.g,e=a.b,b=f.r-d,c=f.g-g,h=f.b-e;return function(i){return"rgb("+Math.round(d+b*i)+","+Math.round(g+c*i)+","+Math.round(e+h*i)+")"}};k.interpolateArray=function(a,f){var d=[],g=[],e=a.length,b=f.length,c=Math.min(a.length,f.length),h;for(h=0;h<c;++h)d.push(k.interpolate(a[h],f[h]));for(;h<e;++h)g[h]=a[h];for(;h<b;++h)g[h]=f[h];return function(i){for(h=
0;h<c;++h)g[h]=d[h](i);return g}};k.interpolateObject=function(a,f){var d={},g={},e;for(e in a)if(e in f)d[e]=(e in M||/\bcolor\b/.test(e)?k.interpolateRgb:k.interpolate)(a[e],f[e]);else g[e]=a[e];for(e in f)e in a||(g[e]=f[e]);return function(b){for(e in d)g[e]=d[e](b);return g}};var L=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,M={background:1,fill:1,stroke:1};k.tween=function(a){return{bind:typeof a=="function"?function(){var f=this.value,d=this.name,g=a.apply(this,arguments),e=(d in M||
/\bcolor\b/.test(d)?k.interpolateRgb:k.interpolate)(f,g);return function(){return e(k.time)}}:function(){var f=this.value,d=this.name,g=(d in M||/\bcolor\b/.test(d)?k.interpolateRgb:k.interpolate)(f,a);return function(){return g(k.time)}}}};var v={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",
a*Math.pow(2,10*-g)*Math.sin(-(g+d)*2*Math.PI/f)}},back:function(a){a||(a=1.70158);return function(f){return f*f*((a+1)*f-a)}},bounce:function(){return Z}},qa={"in":function(a){return a},out:z,"in-out":O,"out-int":function(a){return O(z(a))}};j.ease=function(a){var f=a.indexOf("-"),d=f>=0?a.substring(0,f):a;f=f>=0?a.substring(f+1):"in";return qa[f](pa[d].apply(null,Array.prototype.slice.call(arguments,1)))};j.interpolate=function(a,f){if(typeof f=="number")return j.interpolateNumber(+a,f);if(typeof f==
"string")return f in w||/^(#|rgb\(|hsl\()/.test(f)?j.interpolateRgb(String(a),f):j.interpolateString(String(a),f);if(f instanceof Array)return j.interpolateArray(a,f);return j.interpolateObject(a,f)};j.interpolateNumber=function(a,f){f-=a;return function(d){return a+f*d}};j.interpolateString=function(a,f){var d,g,e=0,b=[],c=[],i,h;for(g=0;d=L.exec(f);++g){d.index&&b.push(f.substring(e,d.index));c.push({i:b.length,x:d[0]});b.push(null);e=L.lastIndex}e<f.length&&b.push(f.substring(e));g=0;for(i=c.length;(d=
L.exec(a))&&g<i;++g){h=c[g];if(h.x==d[0]){if(h.i)if(b[h.i+1]==null){b[h.i-1]+=h.x;b.splice(h.i,1);for(d=g+1;d<i;++d)c[d].i--}else{b[h.i-1]+=h.x+b[h.i+1];b.splice(h.i,2);for(d=g+1;d<i;++d)c[d].i-=2}else if(b[h.i+1]==null)b[h.i]=h.x;else{b[h.i]=h.x+b[h.i+1];b.splice(h.i+1,1);for(d=g+1;d<i;++d)c[d].i--}c.splice(g,1);i--;g--}else h.x=j.interpolateNumber(parseFloat(d[0]),parseFloat(h.x))}for(;g<i;){h=c.pop();if(b[h.i+1]==null)b[h.i]=h.x;else{b[h.i]=h.x+b[h.i+1];b.splice(h.i+1,1)}i--}if(b.length==1)return b[0]==
null?c[0].x:function(){return f};return function(l){for(g=0;g<i;++g)b[(h=c[g]).i]=h.x(l);return b.join("")}};j.interpolateRgb=function(a,f){a=E(a);f=E(f);var d=a.r,g=a.g,e=a.b,b=f.r-d,c=f.g-g,i=f.b-e;return function(h){return"rgb("+Math.round(d+b*h)+","+Math.round(g+c*h)+","+Math.round(e+i*h)+")"}};j.interpolateArray=function(a,f){var d=[],g=[],e=a.length,b=f.length,c=Math.min(a.length,f.length),i;for(i=0;i<c;++i)d.push(j.interpolate(a[i],f[i]));for(;i<e;++i)g[i]=a[i];for(;i<b;++i)g[i]=f[i];return function(h){for(i=
0;i<c;++i)g[i]=d[i](h);return g}};j.interpolateObject=function(a,f){var d={},g={},e;for(e in a)if(e in f)d[e]=(e in M||/\bcolor\b/.test(e)?j.interpolateRgb:j.interpolate)(a[e],f[e]);else g[e]=a[e];for(e in f)e in a||(g[e]=f[e]);return function(b){for(e in d)g[e]=d[e](b);return g}};var L=/[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g,M={background:1,fill:1,stroke:1};j.tween=function(a){return{bind:typeof a=="function"?function(){var f=this.value,d=this.name,g=a.apply(this,arguments),e=(d in M||
/\bcolor\b/.test(d)?j.interpolateRgb:j.interpolate)(f,g);return function(){return e(j.time)}}:function(){var f=this.value,d=this.name,g=(d in M||/\bcolor\b/.test(d)?j.interpolateRgb:j.interpolate)(f,a);return function(){return g(j.time)}}}};var w={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",
chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",
darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",
lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",
mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",
peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",
wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},N;for(N in v)v[N]=E(v[N]);k.hsl=function(a,f,d){a=P(a,f,d);return"rgb("+a.r+","+a.g+","+a.b+")"};k.linear=function(){function a(h){return c((h-f)*b)}var f=0,d=1,g=0,e=1,b=1/(d-f),c=k.interpolate(g,e);a.invert=function(h){return(h-g)/b+f};a.domain=function(h){if(!arguments.length)return[f,d];f=h[0];d=h[1];b=1/(d-f);return a};a.range=function(h){if(!arguments.length)return[g,e];g=h[0];e=h[1];c=k.interpolate(g,
e);return a};a.ticks=function(h){var i=Math.min(f,d),l=Math.max(f,d),n=l-i,m=Math.pow(10,Math.floor(Math.log(n/h)/Math.LN10));n=h/(n/m);h=[];if(n<=0.15)m*=10;else if(n<=0.35)m*=5;else if(n<=0.75)m*=2;i=Math.ceil(i/m)*m;l=Math.floor(l/m)*m+m*0.5;n=Math.max(0,-Math.floor(Math.log(m)/Math.LN10+0.01));do h.push({value:i,label:i.toFixed(n)});while((i+=m)<l);return h};return a};k.log=function(){function a(d){return f(Math.log(d))}var f=k.linear();a.invert=function(d){return Math.exp(f.invert(d))};a.domain=
function(d){if(!arguments.length)return f.domain().map(Math.exp);f.domain(d.map(Math.log));return a};a.range=function(){var d=f.range.apply(f,arguments);return arguments.length?a:d};return a};k.pow=function(){function a(c){return Math.pow(c,e)}function f(c){return Math.pow(c,b)}function d(c){return g(a(c))}var g=k.linear(),e=1,b=1/e;d.invert=function(c){return f(g.invert(c))};d.domain=function(c){if(!arguments.length)return g.domain().map(f);g.domain(c.map(a));return d};d.range=function(){var c=g.range.apply(g,
arguments);return arguments.length?d:c};d.exponent=function(c){if(!arguments.length)return e;var h=d.domain();e=c;b=1/c;return d.domain(h)};return d};k.sqrt=function(){return k.pow().exponent(0.5)};k.ordinal=function(){function a(b){b=b in d?d[b]:d[b]=f.push(b)-1;return g[b%g.length]}var f=[],d={},g=[],e=0;a.domain=function(b){if(!arguments.length)return f;f=b;d={};for(var c=-1,h=-1,i=f.length;++c<i;){b=f[c];b in d||(d[b]=++h)}return a};a.range=function(b){if(!arguments.length)return g;g=b;return a};
a.rangePoints=function(b,c){if(arguments.length<2)c=0;var h=b[0],i=b[1],l=(i-h)/(f.length-1+c);g=f.length==1?[(h+i)/2]:k.range(h+l*c/2,i+l/2,l);e=0;return a};a.rangeBands=function(b,c){if(arguments.length<2)c=0;var h=b[0],i=b[1],l=(i-h)/(f.length+c);g=k.range(h+l*c,i,l);e=l*(1-c);return a};a.rangeBand=function(){return e};return a};var j=[];k.select=function(a){return Q().select(a)};k.selectAll=function(a){return Q().selectAll(a)}})(this);
wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},N;for(N in w)w[N]=E(w[N]);j.hsl=function(a,f,d){a=P(a,f,d);return"rgb("+a.r+","+a.g+","+a.b+")"};j.linear=function(){function a(h){return i((h-d)*c)}function f(h){var l=Math.min(d,g),n=Math.max(d,g),o=n-l,p=Math.pow(10,Math.floor(Math.log(o/h)/Math.LN10));h=h/(o/p);var q;if(h<=0.15)p*=10;else if(h<=0.35)p*=5;else if(h<=0.75)p*=2;l=Math.ceil(l/p)*p;n=Math.floor(n/p)*p+p*0.5;q=Math.max(0,-Math.floor(Math.log(p)/
Math.LN10+0.01));return{range:function(){return j.range(l,n,p)},format:function(r){return r.toFixed(q)}}}var d=0,g=1,e=0,b=1,c=1/(g-d),i=j.interpolate(e,b);a.invert=function(h){return(h-e)/c+d};a.domain=function(h){if(!arguments.length)return[d,g];d=h[0];g=h[1];c=1/(g-d);return a};a.range=function(h){if(!arguments.length)return[e,b];e=h[0];b=h[1];i=j.interpolate(e,b);return a};a.ticks=function(h){return f(h).range()};a.tickFormat=function(h){return f(h).format};return a};j.log=function(){function a(d){return f(Math.log(d))}
var f=j.linear();a.invert=function(d){return Math.exp(f.invert(d))};a.domain=function(d){if(!arguments.length)return f.domain().map(Math.exp);f.domain(d.map(Math.log));return a};a.range=function(){var d=f.range.apply(f,arguments);return arguments.length?a:d};return a};j.pow=function(){function a(c){return Math.pow(c,e)}function f(c){return Math.pow(c,b)}function d(c){return g(a(c))}var g=j.linear(),e=1,b=1/e;d.invert=function(c){return f(g.invert(c))};d.domain=function(c){if(!arguments.length)return g.domain().map(f);
g.domain(c.map(a));return d};d.range=function(){var c=g.range.apply(g,arguments);return arguments.length?d:c};d.exponent=function(c){if(!arguments.length)return e;var i=d.domain();e=c;b=1/c;return d.domain(i)};return d};j.sqrt=function(){return j.pow().exponent(0.5)};j.ordinal=function(){function a(b){b=b in d?d[b]:d[b]=f.push(b)-1;return g[b%g.length]}var f=[],d={},g=[],e=0;a.domain=function(b){if(!arguments.length)return f;f=b;d={};for(var c=-1,i=-1,h=f.length;++c<h;){b=f[c];b in d||(d[b]=++i)}return a};
a.range=function(b){if(!arguments.length)return g;g=b;return a};a.rangePoints=function(b,c){if(arguments.length<2)c=0;var i=b[0],h=b[1],l=(h-i)/(f.length-1+c);g=f.length==1?[(i+h)/2]:j.range(i+l*c/2,h+l/2,l);e=0;return a};a.rangeBands=function(b,c){if(arguments.length<2)c=0;var i=b[0],h=b[1],l=(h-i)/(f.length+c);g=j.range(i+l*c,h,l);e=l*(1-c);return a};a.rangeBand=function(){return e};return a};var k=[];j.select=function(a){return Q().select(a)};j.selectAll=function(a){return Q().selectAll(a)}})(this);

Просмотреть файл

@ -49,7 +49,7 @@ bars.append("svg:text")
.attr("dy", ".35em")
.attr("fill", "white")
.attr("text-anchor", "end")
.text(function(d) { return d.toFixed(2); });
.text(x.tickFormat(100));
bars.append("svg:text")
.attr("x", 0)
@ -63,7 +63,7 @@ var rules = vis.selectAll("g.rule")
.data(x.ticks(10))
.enter.append("svg:g")
.attr("class", "rule")
.attr("transform", function(d) { return "translate(" + x(d.value) + ",0)"; });
.attr("transform", function(d) { return "translate(" + x(d) + ",0)"; });
rules.append("svg:line")
.attr("y1", h)
@ -80,7 +80,7 @@ rules.append("svg:text")
.attr("y", h + 9)
.attr("dy", ".71em")
.attr("text-anchor", "middle")
.text(function(d) { return d.label; });
.text(x.tickFormat(10));
vis.append("svg:line")
.attr("y1", 0)

Просмотреть файл

@ -33,24 +33,38 @@ d3.linear = function() {
};
// TODO Dates? Ugh.
scale.ticks = function(m) {
function ticks(m) {
var start = Math.min(x0, x1),
stop = Math.max(x0, x1),
span = stop - start,
step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),
err = m / (span / step),
ticks = [],
digits;
// Filter ticks to get closer to the desired count.
if (err <= .15) step *= 10;
else if (err <= .35) step *= 5;
else if (err <= .75) step *= 2;
// Round start and stop values to step interval.
start = Math.ceil(start / step) * step;
stop = Math.floor(stop / step) * step + step * .5; // inclusive
// Determine the precision for tick labels.
digits = Math.max(0, -Math.floor(Math.log(step) / Math.LN10 + .01));
do {
ticks.push({value: start, label: start.toFixed(digits)});
} while ((start += step) < stop);
return ticks;
return {
range: function() { return d3.range(start, stop, step); },
format: function(d) { return d.toFixed(digits); }
};
}
scale.ticks = function(m) {
return ticks(m).range();
};
scale.tickFormat = function(m) {
return ticks(m).format;
};
return scale;