This commit is contained in:
Michael Bostock 2010-10-20 15:22:22 -07:00
Родитель 92d15a4472
Коммит 78bca67502
6 изменённых файлов: 203 добавлений и 62 удалений

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

@ -8,6 +8,7 @@ SRC_FILES = \
src/date.js \
src/object.js \
src/start.js \
src/range.js \
src/ns.js \
src/dispatch.js \
src/ease.js \
@ -19,6 +20,7 @@ SRC_FILES = \
src/log.js \
src/pow.js \
src/sqrt.js \
src/ordinal.js \
src/transform.js \
src/transform_append.js \
src/transform_attr.js \

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

@ -9,6 +9,22 @@ if (!Object.create) Object.create = function(o) {
(function(_) {
var d3 = _.d3 = {};
d3.version = "0.0.0"; // semver
/**
* @param {number} start
* @param {number=} stop
* @param {number=} step
*/
d3.range = function(start, stop, step) {
if (arguments.length == 1) { stop = start; start = 0; }
if (step == null) step = 1;
if ((stop - start) / step == Infinity) throw new Error("infinite range");
var range = [],
i = -1,
j;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j);
else while ((j = start + step * ++i) < stop) range.push(j);
return range;
};
var ns = {
prefix: {
@ -720,6 +736,62 @@ d3.pow = function() {
d3.sqrt = function() {
return d3.pow().exponent(.5);
};
d3.ordinal = function() {
var domain = [],
index = {},
range = [],
rangeBand = 0;
function scale(x) {
var i = x in index ? index[x] : (index[x] = domain.push(x) - 1);
return range[i % range.length];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x;
index = {};
var i = -1, j = -1, n = domain.length; while (++i < n) {
x = domain[i];
if (!(x in index)) index[x] = ++j;
}
return scale;
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return scale;
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0],
stop = x[1],
step = (stop - start) / (domain.length - 1 + padding);
range = domain.length == 1
? [(start + stop) / 2]
: d3.range(start + step * padding / 2, stop + step / 2, step);
rangeBand = 0;
return scale;
};
scale.rangeBands = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0],
stop = x[1],
step = (stop - start) / (domain.length + padding);
range = d3.range(start + step * padding, stop, step);
rangeBand = step * (1 - padding);
return scale;
};
scale.rangeBand = function() {
return rangeBand;
};
return scale;
};
var d3_transform_stack = [];
function d3_transform() {

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

@ -1,36 +1,38 @@
if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(D){function z(){}z.prototype=D;return new z};
(function(D){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 E(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 F(a){var f,e,g,d,b;if(d=/([a-z]+)\((.*)\)/i.exec(a)){b=d[2].split(",");switch(d[1]){case "hsl":return P(parseFloat(b[0]),parseFloat(b[1])/100,parseFloat(b[2])/100);case "rgb":return{r:G(b[0]),g:G(b[1]),b:G(b[2])}}}if(d=v[a])return d;if(a==null)return v.black;if(a.charAt(0)=="#"){if(a.length==4){f=a.charAt(1);f+=f;e=a.charAt(2);e+=e;g=a.charAt(3);g+=g}else if(a.length==7){f=a.substring(1,3);e=a.substring(3,5);g=a.substring(5,7)}f=parseInt(f,16);e=parseInt(e,16);g=parseInt(g,16)}return{r:f,
g:e,b:g}}function P(a,f,e){function g(c){if(c>360)c-=360;else if(c<0)c+=360;if(c<60)return d+(b-d)*c/60;if(c<180)return b;if(c<240)return d+(b-d)*(240-c)/60;return d}var d,b;a%=360;if(a<0)a+=360;f=f<0?0:f>1?1:f;e=e<0?0:e>1?1:e;b=e<=0.5?e*(1+f):e+f-e*f;d=2*e-b;return{r:Math.round(g(a+120)*255),g:Math.round(g(a)*255),b:Math.round(g(a-120)*255)}}function G(a){var f=parseFloat(a);return a.charAt(a.length-1)=="%"?Math.round(f*2.55):f}function Q(){function a(g,d){var b=Object.create(f);b.pop=g;b.data=function(c){var h,
i={impl:R,bind:$,value:c,actions:[],enterActions:[],exitActions:[]};d.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){d.push({impl:aa,bind:ba,name:A.qualify(c),value:h});return b};b.style=function(c,h,i){d.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:[]};d.push(i);
return a(b,i.actions)};b.remove=function(c){d.push({impl:fa,selector:c});return b};b.text=function(c){d.push({impl:ga,value:c});return b};b.on=function(c){c={impl:ha,type:c,actions:[]};d.push(c);return a(b,c.actions)};b.filter=function(c){c={impl:S,bind:S,filter:c,actions:[]};d.push(c);return a(b,c.actions)};b.select=function(c){c={impl:H,bind:ia,selector:c,actions:[]};d.push(c);return a(b,c.actions)};b.selectAll=function(c){c={impl:I,bind:ja,selector:c,actions:[]};d.push(c);return a(b,c.actions)};
b.transition=function(){var c,h={impl:ka,actions:[],endActions:[],ease:k.ease("cubic-in-out"),delay:0,duration:250};d.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={},e=[];f.select=function(g){g={impl:H,selector:g,actions:[]};e.push(g);return a(f,g.actions)};f.selectAll=function(g){g={impl:I,selector:g,actions:[]};e.push(g);
return a(f,g.actions)};f.apply=function(){j.unshift(null);u(e,[{node:document,index:0}]);j.shift();return f};return f}function u(a,f){var e=a.length,g;for(g=0;g<e;++g)a[g].impl(f,u)}function ea(a,f){var e=a.length,g=this.name,d=[],b,c,h;if(g.local)for(b=0;b<e;++b){d.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<e;++b){d.push(h=Object.create(c=a[b]));h.node=(h.parent=c).node.appendChild(document.createElement(g))}f(this.actions,
d)}function aa(a){var f=a.length,e=this.name,g=this.value,d,b,c;if(e.local)if(g==null)for(d=0;d<f;++d)a[d].node.removeAttributeNS(e.space,e.local);else if(typeof g=="function")for(d=0;d<f;++d){j[0]=(b=a[d]).data;c=g.apply(b,j);c==null?b.node.removeAttributeNS(e.space,e.local):b.node.setAttributeNS(e.space,e.local,c)}else for(d=0;d<f;++d)a[d].node.setAttributeNS(e.space,e.local,g);else if(g==null)for(d=0;d<f;++d)a[d].node.removeAttribute(e);else if(typeof g=="function")for(d=0;d<f;++d){j[0]=(b=a[d]).data;
c=g.apply(b,j);c==null?b.node.removeAttribute(e):b.node.setAttribute(e,c)}else for(d=0;d<f;++d)a[d].node.setAttribute(e,g)}function ba(a){var f=a.length,e=this.name,g=this.bound||(this.bound=this.value),d="attr."+(e.local?e.space+":"+e.local:e),b,c;if(g&&g.bind){if(e.local)for(b=0;b<f;++b){(c=a[b]).value=c.node.getAttributeNS(e.space,e.local);c.name=e.space+":"+e.local;j[0]=c.data;c[d]=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(e);c.name=
e;j[0]=c.data;c[d]=g.bind.apply(c,j);delete c.value;delete c.name}this.value=function(){return this[d].apply(this,arguments)}}}function R(a,f){var e=this.value,g=a.length,d,b=this.key,c,h,i,l,n=[],o=[],w=[],p,s,m;if(typeof e=="function"){c=j.shift();e=e.apply(null,j);j.unshift(c)}d=e.length;if(b){c=b.name;h=b.value;p={};s={};m={};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<d;++b){j[0]=c=e[b];i=h.apply(null,j);if(i!=null){s[i]=c;m[i]=b}}for(i in s){c=s[i];b=m[i];(l=p[i])?o.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 s||w.push({node:p[i]})}else{i=d<g?d:g;for(b=0;b<i;++b){(l=a[b]).data=e[b];if(l.node)o.push(l);else{l.node=l.parent.node;n.push(l)}}for(i=b;i<d;++i)n.push({node:a.parent.node,data:e[i],index:i});for(i=b;i<g;++i)w.push(a[i])}f(this.enterActions,n);f(this.actions,o);f(this.exitActions,w)}
function $(a,f){var e=a.length,g=this.bound||(this.bound=this.value),d,b,c;if(g&&g.bind){d=[];for(b=0;b<e;++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<e;++b){j[0]=(c=a[b]).data;d[b]=c.data_.apply(c,j)}j.shift();return d}}else R.call(this,a,f)}function fa(a){var f=a.length,e=this.selector,g,d,b,c,h;if(e==null)for(d=0;d<f;++d){h=a[d].node;h.parentNode.removeChild(h)}else for(d=0;d<f;++d){g=a[d].node.querySelectorAll(e);
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 o=j;try{j=i;k.event=n;for(c=0;c<g;++c)e[c].impl(l,u)}finally{delete k.event;j=o}}}var e=this.actions,g=e.length,d=a.length,b="on"+this.type,c=0,h,i=j.slice();if(g)for(;c<d;++c){h=a[c];h.node[b]=f([h])}else for(;c<d;++c)a[c].node[b]=null}function S(a,f){var e=[],g=a.length,d=this.filter,b,c;for(b=0;b<g;++b){j[0]=(c=a[b]).data;d.apply(c,j)&&e.push(c)}f(this.actions,e)}function H(a,f){var e=
[],g=a.length,d=this.selector,b,c,h,i;for(b=0;b<g;++b){i=(c=a[b]).node.querySelector(d);e.push(h=Object.create(c));h.parent=c;h.node=i}f(this.actions,e)}function ia(a,f){var e=this;H.call(this,a,function(g,d){f(g,d);e.impl=function(b,c){c(g,d)}})}function I(a,f){var e=a.length,g=this.selector,d,b;j.unshift(null);for(d=0;d<e;++d){j[1]=(b=a[d]).data;var c=f,h=this.actions,i=b.node.querySelectorAll(g),l=[],n=0,o=i.length;for(l.parent=b;n<o;n++)l.push({node:i[n],index:n});c(h,l)}j.shift()}function ja(a,
f){var e=a.length,g,d;I.call(this,a,function(b,c){f(b,c.parent.selectAll=c)});this.impl=function(b,c){j.unshift(null);g=0;for(e=b.length;g<e;++g){j[1]=(d=b[g]).data;c(this.actions,d.selectAll)}j.shift()}}function ca(a){var f=a.length,e=this.name,g=this.value,d=this.priority,b,c,h;if(g==null)for(b=0;b<f;++b)a[b].node.style.removeProperty(e);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(e):c.node.style.setProperty(e,h,d)}else for(b=
0;b<f;++b)a[b].node.style.setProperty(e,g,d)}function da(a){var f=a.length,e=this.name,g=this.bound||(this.bound=this.value),d="style."+e,b,c;if(g&&g.bind){for(b=0;b<f;++b){(c=a[b]).value=c.node.style.getPropertyValue(e);c.name=e;j[0]=c.data;c[d]=g.bind.apply(c,j);delete c.value;delete c.name}this.value=function(){return this[d].apply(this,arguments)}}}function ga(a){var f=a.length,e=this.value,g,d,b;if(typeof e=="function")for(g=0;g<f;++g){d=a[g];j[0]=d.data;b=e.apply(d,j);for(d=d.node;d.lastChild;)d.removeChild(d.lastChild);
d.appendChild(document.createTextNode(b))}else for(g=0;g<f;++g){for(d=a[g].node;d.lastChild;)d.removeChild(d.lastChild);d.appendChild(document.createTextNode(e))}}function ka(a){function f(x){var q=j;for(m=0;m<s;++m)(r=a[m]).node.interval=x;try{k.time=0;j=B;T(d,a)}finally{delete k.time;j=q}}function e(){var x=j,q=a.filter(function(la){return la.node.interval==o}),C=q.length,J=Date.now(),y,U=true;try{j=B;for(m=0;m<C;++m){r=q[m];y=(J-c-r.delay)/l;if(!(y<0)){if(y>1)y=1;else U=false;k.time=n(y);for(t=
0;t<w;++t)d[t].impl([r],u);if(y==1){for(t=0;t<p;++t)b[t].impl([r],u);r.delay=Infinity}}}}finally{delete k.time;j=x}U&&clearInterval(o)}function g(){var x=j,q=(Date.now()-c-h)/l,C=a.filter(function(J){return J.node.interval==o});try{j=B;k.time=n(q<0?0:q>1?1:q);for(m=0;m<w;++m)d[m].impl(C,u)}finally{delete k.time;j=x}if(q>=1){clearInterval(o);try{j=B;for(m=0;m<p;++m)b[m].impl(C,u)}finally{j=x}}}var d=this.actions,b=this.endActions,c=Date.now(),h=this.delay,i=Infinity,l=this.duration,n=this.ease,o,w=
d.length,p=b.length,s=a.length,m,t,r,K,B=j.slice();if(typeof h=="function"){for(m=0;m<s;++m){j[0]=(r=a[m]).data;K=r.delay=h.apply(r,j);if(K<i)i=K}setTimeout(function(){f(o=setInterval(e,24))},i)}else setTimeout(function(){f(o=setInterval(g,24))},h)}function T(a,f){var e=a.length,g,d;for(d=0;d<e;++d){g=a[d];g.bind&&g.bind(f,T)}}var k=D.d3={};k.version="0.0.0";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(e,g){for(var d=f[e]||(f[e]=[]),b=0;b<d.length;b++)if(d[b].handler==g)return a;d.push({handler:g,on:true});return a};a.off=function(e,g){var d=f[e];if(d)for(var b=0;b<d.length;b++){var c=d[b];if(c.handler==g){c.on=false;d.splice(b,1);break}}return a};a.dispatch=
function(e){var g=f[e.type];if(g){g=g.slice();for(var d=0;d<g.length;d++){var b=g[d];b.on&&b.handler.call(a,e)}}};return a};var ma=E(2),na=E(3),oa={linear:function(){return V},poly:E,quad:function(){return ma},cubic:function(){return na},sin:function(){return W},exp:function(){return X},circle:function(){return Y},elastic:function(a,f){var e;if(arguments.length<2)f=0.45;if(arguments.length<1){a=1;e=f/4}else e=f/(2*Math.PI)*Math.asin(1/a);return function(g){return 1+a*Math.pow(2,10*-g)*Math.sin(-(g+
e)*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}},pa={"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("-"),e=f>=0?a.substring(0,f):a;f=f>=0?a.substring(f+1):"in";return pa[f](oa[e].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(e){return a+f*e}};k.interpolateString=function(a,f){var e,g,d=0,b=[],c=[],h,i;for(g=0;e=L.exec(f);++g){e.index&&b.push(f.substring(d,e.index));c.push({i:b.length,x:e[0]});b.push(null);d=L.lastIndex}d<f.length&&b.push(f.substring(d));g=0;for(h=c.length;(e=L.exec(a))&&g<h;++g){i=c[g];if(i.x==e[0]){if(i.i)if(b[i.i+
1]==null){b[i.i-1]+=i.x;b.splice(i.i,1);for(e=g+1;e<h;++e)c[e].i--}else{b[i.i-1]+=i.x+b[i.i+1];b.splice(i.i,2);for(e=g+1;e<h;++e)c[e].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(e=g+1;e<h;++e)c[e].i--}c.splice(g,1);h--;g--}else i.x=k.interpolateNumber(parseFloat(e[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=F(a);f=F(f);var e=a.r,g=a.g,d=a.b,b=f.r-e,c=f.g-g,h=f.b-d;return function(i){return"rgb("+Math.round(e+b*i)+","+Math.round(g+c*i)+","+Math.round(d+h*i)+")"}};k.interpolateArray=function(a,f){var e=[],g=[],d=a.length,b=f.length,c=Math.min(a.length,f.length),h;for(h=0;h<c;++h)e.push(k.interpolate(a[h],f[h]));for(;h<d;++h)g[h]=a[h];for(;h<b;++h)g[h]=f[h];return function(i){for(h=0;h<c;++h)g[h]=e[h](i);return g}};k.interpolateObject=
function(a,f){var e={},g={},d;for(d in a)if(d in f)e[d]=(d in M||/\bcolor\b/.test(d)?k.interpolateRgb:k.interpolate)(a[d],f[d]);else g[d]=a[d];for(d in f)d in a||(g[d]=f[d]);return function(b){for(d in e)g[d]=e[d](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,e=this.name,g=a.apply(this,arguments),d=(e in M||/\bcolor\b/.test(e)?k.interpolateRgb:k.interpolate)(f,
g);return function(){return d(k.time)}}:function(){var f=this.value,e=this.name,g=(e in M||/\bcolor\b/.test(e)?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",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]=F(v[N]);k.hsl=function(a,f,e){a=P(a,f,e);return"rgb("+a.r+","+a.g+","+a.b+")"};k.linear=function(){function a(h){return c((h-f)*b)}var f=0,e=1,g=0,d=1,b=1/(e-f),c=k.interpolate(g,d);a.invert=function(h){return(h-g)/b+f};a.domain=function(h){if(!arguments.length)return[f,e];f=h[0];e=h[1];b=1/(e-f);return a};a.range=function(h){if(!arguments.length)return[g,d];g=h[0];d=h[1];c=k.interpolate(g,d);return a};return a};k.log=function(){function a(e){return f(Math.log(e))}
var f=k.linear();a.invert=function(e){return Math.exp(f.invert(e))};a.domain=function(e){if(!arguments.length)return f.domain().map(Math.exp);f.domain(e.map(Math.log));return a};a.range=function(){var e=f.range.apply(f,arguments);return arguments.length?a:e};return a};k.pow=function(){function a(c){return Math.pow(c,d)}function f(c){return Math.pow(c,b)}function e(c){return g(a(c))}var g=k.linear(),d=1,b=1/d;e.invert=function(c){return f(g.invert(c))};e.domain=function(c){if(!arguments.length)return g.domain().map(f);
g.domain(c.map(a));return e};e.range=function(){var c=g.range.apply(g,arguments);return arguments.length?e:c};e.exponent=function(c){if(!arguments.length)return d;var h=e.domain();d=c;b=1/c;return e.domain(h)};return e};k.sqrt=function(){return k.pow().exponent(0.5)};var j=[];k.select=function(a){return Q().select(a)};k.selectAll=function(a){return Q().selectAll(a)}})(this);
function F(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:G(b[0]),g:G(b[1]),b:G(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 G(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.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:H,bind:ia,selector:c,actions:[]};e.push(c);return a(b,c.actions)};b.selectAll=function(c){c={impl:I,bind:ja,selector:c,actions:[]};e.push(c);return a(b,c.actions)};
b.transition=function(){var c,h={impl:ka,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:H,selector:g,actions:[]};d.push(g);return a(f,g.actions)};f.selectAll=function(g){g={impl:I,selector:g,actions:[]};d.push(g);
return a(f,g.actions)};f.apply=function(){j.unshift(null);u(d,[{node:document,index:0}]);j.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,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 R(a,f){var d=this.value,g=a.length,e,b=this.key,c,h,i,l,n=[],o=[],w=[],p,s,m;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={};s={};m={};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){s[i]=c;m[i]=b}}for(i in s){c=s[i];b=m[i];(l=p[i])?o.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 s||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)o.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,o);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 o=j;try{j=i;k.event=n;for(c=0;c<g;++c)d[c].impl(l,u)}finally{delete k.event;j=o}}}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 H(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 ia(a,f){var d=this;H.call(this,a,function(g,e){f(g,e);d.impl=function(b,c){c(g,e)}})}function I(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;var c=f,h=this.actions,i=b.node.querySelectorAll(g),l=[],n=0,o=i.length;for(l.parent=b;n<o;n++)l.push({node:i[n],index:n});c(h,l)}j.shift()}function ja(a,
f){var d=a.length,g,e;I.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 ka(a){function f(x){var q=j;for(m=0;m<s;++m)(r=a[m]).node.interval=x;try{k.time=0;j=B;T(e,a)}finally{delete k.time;j=q}}function d(){var x=j,q=a.filter(function(la){return la.node.interval==o}),C=q.length,J=Date.now(),y,U=true;try{j=B;for(m=0;m<C;++m){r=q[m];y=(J-c-r.delay)/l;if(!(y<0)){if(y>1)y=1;else U=false;k.time=n(y);for(t=
0;t<w;++t)e[t].impl([r],u);if(y==1){for(t=0;t<p;++t)b[t].impl([r],u);r.delay=Infinity}}}}finally{delete k.time;j=x}U&&clearInterval(o)}function g(){var x=j,q=(Date.now()-c-h)/l,C=a.filter(function(J){return J.node.interval==o});try{j=B;k.time=n(q<0?0:q>1?1:q);for(m=0;m<w;++m)e[m].impl(C,u)}finally{delete k.time;j=x}if(q>=1){clearInterval(o);try{j=B;for(m=0;m<p;++m)b[m].impl(C,u)}finally{j=x}}}var e=this.actions,b=this.endActions,c=Date.now(),h=this.delay,i=Infinity,l=this.duration,n=this.ease,o,w=
e.length,p=b.length,s=a.length,m,t,r,K,B=j.slice();if(typeof h=="function"){for(m=0;m<s;++m){j[0]=(r=a[m]).data;K=r.delay=h.apply(r,j);if(K<i)i=K}setTimeout(function(){f(o=setInterval(d,24))},i)}else setTimeout(function(){f(o=setInterval(g,24))},h)}function T(a,f){var d=a.length,g,e;for(e=0;e<d;++e){g=a[e];g.bind&&g.bind(f,T)}}var k=D.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=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 ma=E(2),na=E(3),oa={linear:function(){return V},poly:E,quad:function(){return ma},cubic:function(){return na},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}},pa={"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 pa[f](oa[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=F(a);f=F(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",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]=F(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};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);

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

@ -17,18 +17,17 @@ svg {
<body>
<script type="text/javascript">
var data = range(10).map(function(i) {
return {index: i, value: Math.random()};
});
var data = d3.range(10).map(Math.random);
var x = d3.linear()
.domain([0, 1])
.range([0, 430]);
var w = 430,
h = 230,
x = d3.linear().domain([0, 1]).range([0, w]),
y = d3.ordinal().domain(d3.range(data.length)).rangeBands([0, h], .2);
var vis = d3.select("body")
.append("svg:svg")
.attr("width", 450)
.attr("height", 275)
.attr("width", w + 20)
.attr("height", h + 20)
.append("svg:g")
.attr("transform", "translate(20,0)");
@ -36,66 +35,60 @@ var bars = vis.selectAll("g.bar")
.data(data)
.enter.append("svg:g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(0," + d.index * 23 + ")"; });
.attr("transform", function(d) { return "translate(0," + y(this.index) + ")"; });
bars.append("svg:rect")
.attr("fill", "steelblue")
.attr("width", function(d) { return x(d.value); })
.attr("height", 20);
.attr("width", x)
.attr("height", y.rangeBand());
bars.append("svg:text")
.attr("x", function(d) { return x(d.value); })
.attr("y", 10)
.attr("x", x)
.attr("y", y.rangeBand() / 2)
.attr("dx", -6)
.attr("dy", ".35em")
.attr("fill", "white")
.attr("text-anchor", "end")
.text(function(d) { return d.value.toFixed(2); });
.text(function(d) { return d.toFixed(2); });
bars.append("svg:text")
.attr("x", 0)
.attr("y", 10)
.attr("y", y.rangeBand() / 2)
.attr("dx", -6)
.attr("dy", ".35em")
.attr("text-anchor", "end")
.text(function(d) { return String.fromCharCode(65 + d.index); });
.text(function(d) { return String.fromCharCode(65 + this.index); });
var rules = vis.selectAll("g.rule")
.data(range(10))
.data(d3.range(10))
.enter.append("svg:g")
.attr("class", "rule")
.attr("transform", function(d) { return "translate(" + x(d / 10) + ",0)"; });
rules.append("svg:line")
.attr("y1", 230)
.attr("y2", 236)
.attr("y1", h)
.attr("y2", h + 6)
.attr("stroke", "black");
rules.append("svg:line")
.attr("y1", 0)
.attr("y2", 230)
.attr("y2", h)
.attr("stroke", "white")
.attr("stroke-opacity", .3);
rules.append("svg:text")
.attr("y", 239)
.attr("y", h + 9)
.attr("dy", ".71em")
.attr("text-anchor", "middle")
.text(function(d) { return (d / 10).toFixed(1); });
vis.append("svg:line")
.attr("y1", 0)
.attr("y2", 230)
.attr("y2", h)
.attr("stroke", "black");
vis.apply();
function range(n) {
var array = [];
for (var i = 0; i < n; i++) array.push(i);
return array;
}
</script>
</body>
</html>

56
src/ordinal.js Normal file
Просмотреть файл

@ -0,0 +1,56 @@
d3.ordinal = function() {
var domain = [],
index = {},
range = [],
rangeBand = 0;
function scale(x) {
var i = x in index ? index[x] : (index[x] = domain.push(x) - 1);
return range[i % range.length];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x;
index = {};
var i = -1, j = -1, n = domain.length; while (++i < n) {
x = domain[i];
if (!(x in index)) index[x] = ++j;
}
return scale;
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return scale;
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0],
stop = x[1],
step = (stop - start) / (domain.length - 1 + padding);
range = domain.length == 1
? [(start + stop) / 2]
: d3.range(start + step * padding / 2, stop + step / 2, step);
rangeBand = 0;
return scale;
};
scale.rangeBands = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0],
stop = x[1],
step = (stop - start) / (domain.length + padding);
range = d3.range(start + step * padding, stop, step);
rangeBand = step * (1 - padding);
return scale;
};
scale.rangeBand = function() {
return rangeBand;
};
return scale;
};

16
src/range.js Normal file
Просмотреть файл

@ -0,0 +1,16 @@
/**
* @param {number} start
* @param {number=} stop
* @param {number=} step
*/
d3.range = function(start, stop, step) {
if (arguments.length == 1) { stop = start; start = 0; }
if (step == null) step = 1;
if ((stop - start) / step == Infinity) throw new Error("infinite range");
var range = [],
i = -1,
j;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j);
else while ((j = start + step * ++i) < stop) range.push(j);
return range;
};