Fix subgroup sorting in chord layout.

This commit is contained in:
Mike Bostock 2011-02-23 09:09:43 -08:00
Родитель 6d8a51b7de
Коммит 59c32fc669
6 изменённых файлов: 8 добавлений и 8 удалений

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

@ -1,4 +1,4 @@
(function(){d3 = {version: "1.0.2"}; // semver
(function(){d3 = {version: "1.0.3"}; // semver
if (!Date.now) Date.now = function() {
return +new Date();
};

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

@ -59,9 +59,9 @@ d3.layout.chord = function() {
x = 0, i = -1; while (++i < n) {
x0 = x, j = -1; while (++j < n) {
var di = groupIndex[i],
dj = subgroupIndex[di][j],
dj = subgroupIndex[i][j],
v = matrix[di][dj];
subgroups[i + "-" + j] = {
subgroups[di + "-" + dj] = {
"index": di,
"subindex": dj,
"startAngle": x,

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

@ -1,5 +1,5 @@
(function(){function z(a){return a.reduce(A,0)}function B(a){for(var h=1,d=0,c=a[0].y,i,f=a.length;h<f;++h)if((i=a[h].y)>c){d=h;c=i}return d}function A(a,h){return a+h.y}d3.layout={};d3.layout.chord=function(){function a(){var g={},m=[],s=d3.range(b),o=[],p,k,v,n,q;c=[];i=[];p=0;for(n=-1;++n<b;){k=0;for(q=-1;++q<b;)k+=f[n][q];m.push(k);o.push(d3.range(b));p+=k}j&&s.sort(function(w,t){return j(m[w],m[t])});l&&o.forEach(function(w,t){w.sort(function(C,D){return l(f[t][C],f[t][D])})});p=(2*Math.PI-e*
b)/p;k=0;for(n=-1;++n<b;){v=k;for(q=-1;++q<b;){var u=s[n],x=o[u][q],y=f[u][x];g[n+"-"+q]={index:u,subindex:x,startAngle:k,endAngle:k+=y*p,value:y}}i.push({index:u,startAngle:v,endAngle:k,value:(k-v)/p});k+=e}for(n=-1;++n<b;)for(q=n-1;++q<b;){s=g[n+"-"+q];o=g[q+"-"+n];if(s.value||o.value)c.push({source:s,target:o})}r&&h()}function h(){c.sort(function(g,m){g=Math.min(g.source.value,g.target.value);m=Math.min(m.source.value,m.target.value);return r(g,m)})}var d={},c,i,f,b,e=0,j,l,r;d.matrix=function(g){if(!arguments.length)return f;
b)/p;k=0;for(n=-1;++n<b;){v=k;for(q=-1;++q<b;){var u=s[n],x=o[n][q],y=f[u][x];g[u+"-"+x]={index:u,subindex:x,startAngle:k,endAngle:k+=y*p,value:y}}i.push({index:u,startAngle:v,endAngle:k,value:(k-v)/p});k+=e}for(n=-1;++n<b;)for(q=n-1;++q<b;){s=g[n+"-"+q];o=g[q+"-"+n];if(s.value||o.value)c.push({source:s,target:o})}r&&h()}function h(){c.sort(function(g,m){g=Math.min(g.source.value,g.target.value);m=Math.min(m.source.value,m.target.value);return r(g,m)})}var d={},c,i,f,b,e=0,j,l,r;d.matrix=function(g){if(!arguments.length)return f;
b=(f=g)&&f.length;c=i=null;return d};d.padding=function(g){if(!arguments.length)return e;e=g;c=i=null;return d};d.sortGroups=function(g){if(!arguments.length)return j;j=g;c=i=null;return d};d.sortSubgroups=function(g){if(!arguments.length)return l;l=g;c=null;return d};d.sortChords=function(g){if(!arguments.length)return r;r=g;c&&h();return d};d.chords=function(){c||a();return c};d.groups=function(){i||a();return i};return d};d3.layout.stack=function(){function a(c){var i=c.length,f=c[0].length,b,
e,j,l=E[h](c);F[d](c,l);for(e=0;e<f;++e){b=1;for(j=c[l[0]][e].y0;b<i;++b)c[l[b]][e].y0=j+=c[l[b-1]][e].y}return c}var h="default",d="zero";a.order=function(c){if(!arguments.length)return h;h=c;return a};a.offset=function(c){if(!arguments.length)return d;d=c;return a};return a};var E={"inside-out":function(a){var h=a.length,d,c=a.map(B),i=a.map(z),f=d3.range(h).sort(function(r,g){return c[r]-c[g]}),b=0,e=0,j=[],l=[];for(a=0;a<h;a++){d=f[a];if(b<e){b+=i[d];j.push(d)}else{e+=i[d];l.push(d)}}return l.reverse().concat(j)},
reverse:function(a){return d3.range(a.length).reverse()},"default":function(a){return d3.range(a.length)}},F={silhouette:function(a,h){var d=a.length,c=a[0].length,i=[],f=0,b,e,j;for(e=0;e<c;++e){for(j=b=0;b<d;b++)j+=a[b][e].y;if(j>f)f=j;i.push(j)}e=0;for(b=h[0];e<c;++e)a[b][e].y0=(f-i[e])/2},wiggle:function(a,h){var d=a.length,c=a[0],i=c.length,f,b,e,j,l,r=h[0],g,m,s,o,p,k;a[r][0].y0=p=k=0;for(b=1;b<i;++b){for(g=f=0;f<d;++f)g+=a[f][b].y;m=f=0;for(o=c[b].x-c[b-1].x;f<d;++f){e=0;j=h[f];for(s=(a[j][b].y-

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

@ -25,7 +25,7 @@ c.delay=b;f=true}else{var i=c.then+c.delay;if(i<e)e=i}c=c.next}f||(F={callback:a
function Z(a,b,d,f){var e=[],c=-1,i=b.length,h=typeof d=="function",g=typeof f=="function",k;if(h&&g)for(;++c<i;)e.push([d.call(a,k=b[c],c),f.call(a,k,c)]);else if(h)for(;++c<i;)e.push([d.call(a,b[c],c),f]);else if(g)for(;++c<i;)e.push([d,f.call(a,b[c],c)]);else for(;++c<i;)e.push([d,f]);return e}function la(a){return a[0]}function ma(a){return a[1]}function H(a){var b=[],d=0,f=a.length,e=a[0];for(b.push(e[0],",",e[1]);++d<f;)b.push("L",(e=a[d])[0],",",e[1]);return b.join("")}function na(a,b){if(b.length<
1||a.length!=b.length&&a.length!=b.length+2)return H(a);var d=a.length!=b.length,f="",e=a[0],c=a[1],i=b[0],h=i,g=1;if(d){f+="Q"+(c[0]-i[0]*2/3)+","+(c[1]-i[1]*2/3)+","+c[0]+","+c[1];e=a[1];g=2}if(b.length>1){h=b[1];c=a[g];g++;f+="C"+(e[0]+i[0])+","+(e[1]+i[1])+","+(c[0]-h[0])+","+(c[1]-h[1])+","+c[0]+","+c[1];for(e=2;e<b.length;e++,g++){c=a[g];h=b[e];f+="S"+(c[0]-h[0])+","+(c[1]-h[1])+","+c[0]+","+c[1]}}if(d){d=a[g];f+="Q"+(c[0]+h[0]*2/3)+","+(c[1]+h[1]*2/3)+","+d[0]+","+d[1]}return f}function oa(a,
b){for(var d=[],f=(1-b)/2,e=a[0],c=a[1],i=a[2],h=2,g=a.length;++h<g;){d.push([f*(i[0]-e[0]),f*(i[1]-e[1])]);e=c;c=i;i=a[h]}d.push([f*(i[0]-e[0]),f*(i[1]-e[1])]);return d}function B(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function K(a,b,d){a.push("C",B(pa,b),",",B(pa,d),",",B(qa,b),",",B(qa,d),",",B(L,b),",",B(L,d))}function Na(){return 0}function Oa(a){return a.source}function Pa(a){return a.target}function Qa(a){return a.radius}function Ra(){return 64}function Sa(){return"circle"}d3=
{version:"1.0.2"};if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(a){function b(){}b.prototype=a;return new b};var M=function(a){return Array.prototype.slice.call(a)};try{M(document.documentElement.childNodes)}catch(eb){M=ua}d3.ascending=function(a,b){return a<b?-1:a>b?1:0};d3.descending=function(a,b){return b<a?-1:b>a?1:0};d3.min=function(a,b){var d=0,f=a.length,e=a[0],c;if(arguments.length==1)for(;++d<f;){if(e>(c=a[d]))e=c}else for(e=b(a[0]);++d<f;)if(e>
{version:"1.0.3"};if(!Date.now)Date.now=function(){return+new Date};if(!Object.create)Object.create=function(a){function b(){}b.prototype=a;return new b};var M=function(a){return Array.prototype.slice.call(a)};try{M(document.documentElement.childNodes)}catch(eb){M=ua}d3.ascending=function(a,b){return a<b?-1:a>b?1:0};d3.descending=function(a,b){return b<a?-1:b>a?1:0};d3.min=function(a,b){var d=0,f=a.length,e=a[0],c;if(arguments.length==1)for(;++d<f;){if(e>(c=a[d]))e=c}else for(e=b(a[0]);++d<f;)if(e>
(c=b(a[d])))e=c;return e};d3.max=function(a,b){var d=0,f=a.length,e=a[0],c;if(arguments.length==1)for(;++d<f;){if(e<(c=a[d]))e=c}else for(e=b(e);++d<f;)if(e<(c=b(a[d])))e=c;return e};d3.nest=function(){function a(c,i){if(c>=d.length)return e?e.call(b,i):f?i.sort(f):i;for(var h=-1,g=i.length,k=d[c],j,o=[],p,m={};++h<g;)if((j=k(p=i[h]))in m)m[j].push(p);else{m[j]=[p];o.push(j)}c++;h=-1;for(g=o.length;++h<g;){p=m[j=o[h]];m[j]=a(c,p)}return m}var b={},d=[],f,e;b.map=function(c){return a(0,c)};b.key=function(c){d.push(c);
return b};b.sortKeys=function(){return b};b.sortValues=function(c){f=c;return b};b.rollup=function(c){e=c;return b};return b};d3.keys=function(a){var b=[],d;for(d in a)b.push(d);return b};d3.values=function(a){var b=[],d;for(d in a)b.push(a[d]);return b};d3.entries=function(a){var b=[],d;for(d in a)b.push({key:d,value:a[d]});return b};d3.merge=function(a){return Array.prototype.concat.apply([],a)};d3.split=function(a,b){var d=[],f=[],e,c=-1,i=a.length;if(arguments.length<2)b=va;for(;++c<i;)if(b.call(f,
e=a[c],c))f=[];else{f.length||d.push(f);f.push(e)}return d};d3.range=function(a,b,d){if(arguments.length==1){b=a;a=0}if(d==null)d=1;if((b-a)/d==Infinity)throw Error("infinite range");var f=[],e=-1,c;if(d<0)for(;(c=a+d*++e)>b;)f.push(c);else for(;(c=a+d*++e)<b;)f.push(c);return f};d3.requote=function(a){return a.replace(Ta,"\\$&")};var Ta=/[\\\^\$\*\+\?\[\]\(\)\.\{\}]/g;d3.xhr=function(a,b,d){var f=new XMLHttpRequest;if(arguments.length<3)d=b;else b&&f.overrideMimeType(b);f.open("GET",a,true);f.onreadystatechange=

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

@ -1 +1 @@
d3 = {version: "1.0.2"}; // semver
d3 = {version: "1.0.3"}; // semver

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

@ -58,9 +58,9 @@ d3.layout.chord = function() {
x = 0, i = -1; while (++i < n) {
x0 = x, j = -1; while (++j < n) {
var di = groupIndex[i],
dj = subgroupIndex[di][j],
dj = subgroupIndex[i][j],
v = matrix[di][dj];
subgroups[i + "-" + j] = {
subgroups[di + "-" + dj] = {
"index": di,
"subindex": dj,
"startAngle": x,