diff --git a/package-lock.json b/package-lock.json index 091ca72c110..38d7d9146b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2338,13 +2338,14 @@ "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, "d3-sankey-circular": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.30.0.tgz", - "integrity": "sha512-7Rnjatzo/WcZrPONlrdtBK+puDdjShnQT82Cmk71xH4jIvF7vd1IFqcxYRLq6d6btFbIqeEPIRvU5JfAvSYWYg==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.32.0.tgz", + "integrity": "sha512-lZvF25xPFNzsHkI4VPAxRVH+U6iZnWKswknOmXd5jl88obWZ7iJJG/nhE49B0+I6ZDsUB78ggsMmSR3S5m9+Sg==", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", - "d3-shape": "^1.2.0" + "d3-shape": "^1.2.0", + "elementary-circuits-directed-graph": "^1.0.4" } }, "d3-shape": { @@ -3046,6 +3047,14 @@ "resolved": "https://registry.npmjs.org/element-size/-/element-size-1.1.1.tgz", "integrity": "sha1-ZOXxWdlxIWMYRby67K8nnDm1404=" }, + "elementary-circuits-directed-graph": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.4.tgz", + "integrity": "sha512-+xpVxSimU+fcHiTRPWrRN1IFOKaygwotCtZGSBle/rnFaFAoI+4Y8/pimAY1cKiDIHTek2Zox1R7SEQAB/AQ1g==", + "requires": { + "strongly-connected-components": "^1.0.1" + } + }, "elliptic": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", diff --git a/package.json b/package.json index 03c0c3a2f0b..d975860f75f 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "@plotly/d3-sankey": "0.7.2", - "d3-sankey-circular": "0.30.0", + "d3-sankey-circular": "0.32.0", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 998203c199d..249ebab281d 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -45,7 +45,7 @@ function sankeyModel(layout, d, traceIndex) { if(circular) { sankey = d3SankeyCircular .sankeyCircular() - .circularLinkGap(2) + .circularLinkGap(0) .nodeId(function(d) { return d.pointNumber; }); diff --git a/test/image/baselines/sankey_circular_large.png b/test/image/baselines/sankey_circular_large.png new file mode 100644 index 00000000000..600ff74b614 Binary files /dev/null and b/test/image/baselines/sankey_circular_large.png differ diff --git a/test/image/baselines/sankey_circular_process.png b/test/image/baselines/sankey_circular_process.png index 82ce1f2e074..438062a1dd1 100644 Binary files a/test/image/baselines/sankey_circular_process.png and b/test/image/baselines/sankey_circular_process.png differ diff --git a/test/image/baselines/sankey_circular_simple.png b/test/image/baselines/sankey_circular_simple.png new file mode 100644 index 00000000000..8c6a99f2e26 Binary files /dev/null and b/test/image/baselines/sankey_circular_simple.png differ diff --git a/test/image/baselines/sankey_subplots_circular.png b/test/image/baselines/sankey_subplots_circular.png index 3b6c2c7b44a..9d744f00ca4 100644 Binary files a/test/image/baselines/sankey_subplots_circular.png and b/test/image/baselines/sankey_subplots_circular.png differ diff --git a/test/image/mocks/sankey_circular_large.json b/test/image/mocks/sankey_circular_large.json new file mode 100644 index 00000000000..6af23521291 --- /dev/null +++ b/test/image/mocks/sankey_circular_large.json @@ -0,0 +1,230 @@ +{ + "data": [{ + "type": "sankey", + "node": { + "label": ["node_0", "node_2", "node_4", "node_6", "node_9", "node_11", "node_14", "node_16", "node_13", "node_18", "node_17", "node_7", "node_20", "node_1", "node_3", "node_5", "node_15", "node_10", "node_12", "node_8", "node_19", "node_21", "node_22", "node_23", "node_24", "node_25"] + }, + "link": { + "source": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25], + "target": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], + "value": [0.0, 0.0, 0.006646893, 11.68228, 412.55902, 442.56927, 0.013883961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.78665316, 8.526513e-14, 0.6138538, 45.966034, 7136.0156, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 0.0, 0.0, 0.60126424, 0.0, 0.0, 44.941578, 7118.8457, 2395.3425, 538.55695, 82.62762, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07240185, 11.468614, 3.858948, 0.8676268, 0.13311486, 0.0, 4.275301e-39, 0.09171584, 14.527993, 4.8883653, 1.0990758, 0.16862473, 3.1385706e-25, 0.11330401, 17.947605, 6.0389934, 1.3577774, 0.20831577, 0.0, 0.0, 0.18538894, 5.684342e-14, 0.6138538, 1.024453, 17.16984, 28.75857, 970.52997, 7037.6914, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6077, 558.2992, 191.0962, 121.232994, 578.6912, 24.096718, 26.353783, 719.0876, 3113.8757, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.105827, 165.261, 56.58344, 31.020855, 81.85729, 1.6002578, 26.410742, 725.0432, 3206.8154, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.514482, 286.2017, 97.96848, 53.24637, 142.6171, 2.948419, 0.0, 0.0, 0.18538894, 0.0, 0.6138538, 1.024453, 17.16984, 26.14728, 697.4959, 2776.9333, 42.072098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0013678052, 0.002282713, 0.038258288, 0.058262054, 1.5541787, 6.1876354, 0.093746156, 0.0012357329, 0.0020622993, 0.03456415, 0.052636396, 1.4041106, 5.590171, 0.08469423, 0.0018279847, 0.0030507008, 0.05112977, 0.07786353, 2.077061, 8.2693815, 0.12528577, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.6112895, 273.0341, 4260.7583, 253.02411, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.42756, 38.605415, 558.2609, 191.03795, 119.67882, 572.5036, 24.002972, 0.20650205, 21.591648, 336.94254, 20.00925, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.207823, 12.103765, 165.22644, 56.530804, 29.616745, 76.26712, 1.5155635, 0.26346198, 27.547321, 429.88214, 25.528448, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.248255, 20.51143, 286.15054, 97.890625, 51.169308, 134.34772, 2.8231332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 7.391909e-07, 0.022095865, 0.026396444, 62.26038, 1.910779, 0.37069288, 32.42175, 0.0019032779, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 0.7359496, 26.192354, 31.18233, 450.91797, 154.30498, 96.666855, 462.42203, 19.387655, 0.16651253, 17.410383, 271.69296, 16.134422, 7.7489085e-07, 0.023194602, 0.02770698, 65.335144, 1.9988183, 0.22508979, 3.0771644, 1.858965e-05, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 0.23029031, 8.231058, 9.759848, 133.23003, 45.583508, 23.881405, 61.497852, 1.2220718, 0.20387426, 21.316889, 332.65485, 19.754627, 7.8483055e-07, 0.023506481, 0.02807797, 66.20128, 2.0252693, 0.23129526, 3.3973153, 2.43151e-05, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 0.37259033, 13.347183, 15.87232, 221.4313, 75.7505, 39.59624, 103.96202, 2.1846197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.50210136, 52.499268, 819.2629, 48.65173, 1.7596759e-07, 0.0052600163, 0.0062837875, 14.821353, 0.4548692, 0.08824504, 7.7181377, 0.00045308354, 0.15154041, 5.1940727, 5.9576397, 84.69344, 28.105146, 17.15378, 79.68187, 3.251594, 0.17519598, 6.2352033, 7.423088, 107.34297, 36.732967, 23.011963, 110.08156, 4.6153154, 0.039989512, 4.1812634, 65.24956, 3.8748293, 1.8609715e-07, 0.0055703963, 0.0066540856, 15.690835, 0.48003453, 0.05405738, 0.73900926, 4.464475e-06, 0.16241841, 5.526259, 6.3168716, 89.66191, 29.704332, 15.119641, 37.828457, 0.7233589, 0.05530633, 1.9767642, 2.343917, 31.996414, 10.947297, 5.7353387, 14.769273, 0.29349175, 0.059587725, 6.2304325, 97.2273, 5.7738204, 2.293878e-07, 0.0068704, 0.008206541, 19.3491, 0.5919393, 0.06760225, 0.9929566, 7.1067407e-06, 0.20157892, 6.832246, 7.7957983, 110.566284, 36.618, 18.723755, 47.9775, 0.9707396, 0.10889953, 3.9010725, 4.6391115, 64.71924, 22.140118, 11.573065, 30.38569, 0.6385137, 2736.3335, 2108.9036, 14.86675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 443.5915, 6569.0674, 8.137072, 454.3161, 5378.305, 8.642767, 13.946691, 6915.0107, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.245143, 3592.2676, 10.048806, 4982.3726, 86.01402, 580.18024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.001811, 892.7646, 21.076576, 730.4533, 2460.0493, 1528.7233, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 245.31956, 5676.3027, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 242.96942, 4647.8516, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 2495.4575, 1203.661, 9.040011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 362.2623, 4105.1655, 7.4855456, 356.7432, 3127.01, 6.5761266, 0.0, 0.0, 1708.9695, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 1415.1053, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 1243.1842, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 154.86191, 325.06226, 5.8267384, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.32737, 1571.1372, 0.65152603, 76.49633, 1520.8418, 2.0666401, 0.0, 0.0, 1066.9521, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 1182.9623, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 1319.3145, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 94.707184, 325.06226, 1072.7788, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 13.172645, 1571.1372, 1183.6139, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 16.3416, 1520.8418, 1321.3811, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 2365.342, 1203.661, 1718.0094, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 232.14693, 4105.1655, 1422.591, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 226.62782, 3127.01, 1249.7604, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 130.11539, 130.11539, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7933001, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 208.01515, 0.0, 1066.1588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1182.1691, 1318.5211, 2534.4382, 11143.2, 850.0, 1.4210855e-14, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 10.644975, 372.82385, 439.97794, 7309.9087, 2190.6462, 1195.7097, 3826.735, 109.31696, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 3.673447, 129.06758, 152.58765, 1480.1659, 758.29, 426.52255, 1509.4688, 49.553318, 37.661854, 12188.093, 1083.6708, 0.16651253, 17.410383, 271.69296, 16.134422, 8.71208, 306.87488, 363.09512, 6260.749, 1812.035, 929.52545, 2206.279, 35.054283, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 3.504252, 123.54458, 146.199, 1326.5828, 725.78723, 373.10846, 889.45154, 14.395311, 64.565796, 12390.9, 1031.66, 0.20387426, 21.316889, 332.65485, 19.754627, 8.824489, 311.60336, 369.0566, 6371.218, 1843.2927, 947.7279, 2276.1665, 37.48881, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 3.6919887, 130.55031, 154.68521, 1436.5192, 768.3573, 396.00433, 958.8815, 16.286312, 2560.01, 9023.914, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 260.56653, 10161.335, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 274.0948, 10360.678, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 190.27011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 208.01515, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 29.2479, 301.9925, 164.92784, 523.5234, 15.082831, 1.6369808, 57.65676, 68.21958, 340.10187, 174.61353, 413.97684, 6.58662, 1.6596992, 58.601566, 69.40645, 346.3034, 178.20404, 427.45975, 7.0508466, 34.438293, 11143.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 37.661842, 12188.093, 38.298496, 12390.9, 2500.0, 0.0, 850.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.644974, 372.80176, 439.95154, 7247.6484, 2188.7356, 1195.3391, 3794.3135, 109.315056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 1000.0, 301.9925, 164.92784, 523.5234, 15.082831, 1e-05, 1083.6708, 8.71208, 306.85168, 363.0674, 6195.414, 1810.0363, 929.30035, 2203.202, 35.054264, 1.6369808, 57.65676, 68.21958, 1164.1049, 340.10187, 174.61353, 413.97684, 6.58662, 26.2673, 1031.66, 8.824488, 311.57983, 369.02853, 6305.0166, 1841.2675, 947.49664, 2272.7693, 37.48879, 1.6596992, 58.601566, 69.40645, 1185.84, 346.3034, 178.20404, 427.45975, 7.0508466], + "label": ["link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_27", "link_29", "link_30", "link_31", "link_32", "link_33", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_0", "link_1", "link_1", "link_2", "link_2", "link_3", "link_3", "link_4", "link_4", "link_5", "link_5", "link_6", "link_6", "link_7", "link_7", "link_8", "link_8", "link_9", "link_9", "link_10", "link_10", "link_11", "link_11", "link_12", "link_12", "link_13", "link_13", "link_14", "link_14", "link_15", "link_15", "link_16", "link_16", "link_17", "link_17", "link_18", "link_18", "link_19", "link_19", "link_20", "link_20", "link_21", "link_21", "link_22", "link_22", "link_23", "link_23", "link_24", "link_24", "link_25", "link_25", "link_26", "link_26", "link_27", "link_27", "link_28", "link_28", "link_29", "link_29", "link_30", "link_30", "link_31", "link_31", "link_32", "link_32", "link_33", "link_33", "link_34", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_27", "link_28", "link_29", "link_31", "link_32", "link_33", "link_34", "link_27", "link_28", "link_29", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_2", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_2", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34"], + "colorscales": [{ + "label": "label_0", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_1", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_2", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_3", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_4", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_5", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_6", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_7", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_8", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_9", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_10", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_11", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_12", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_13", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_14", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_15", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_16", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_17", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_18", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_19", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_20", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_21", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_22", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_23", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_24", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_25", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_26", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_27", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_28", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_29", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_30", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_31", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_32", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_33", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_34", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }], + "hovertemplate": "%{label}
%{flow.labelConcentration:%0.2f}
%{flow.value}" + } + }], + "layout": { + "width": 800, + "height": 800 + } +} diff --git a/test/image/mocks/sankey_circular_simple.json b/test/image/mocks/sankey_circular_simple.json new file mode 100644 index 00000000000..cff172479f7 --- /dev/null +++ b/test/image/mocks/sankey_circular_simple.json @@ -0,0 +1,31 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "pad": 5, + "label": ["0", "1", "2", "3", "sink", "source"] + }, + "link": { + "source": [ + 0, 1, 2, 3, + 0, 1, 2, 3, + 5 + ], + "target": [ + 1, 2, 3, 0, + 4, 4, 4, 4, + 0 + ], + "value": [ + 1, 0.85, 0.7, 0.55, + 0, 0.15, 0.15, 0.15, + 0.45 + ] + } + }], + "layout": { + "width": 800, + "height": 800 + } +} diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index de3a598609b..e74723170f4 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -7,6 +7,7 @@ var d3SankeyCircular = require('d3-sankey-circular'); var mock = require('@mocks/sankey_energy.json'); var mockDark = require('@mocks/sankey_energy_dark.json'); var mockCircular = require('@mocks/sankey_circular.json'); +var mockCircularLarge = require('@mocks/sankey_circular_large.json'); var Sankey = require('@src/traces/sankey'); var createGraphDiv = require('../assets/create_graph_div'); @@ -1069,91 +1070,131 @@ describe('sankey layout generators', function() { describe('d3-sankey-ciruclar', function() { var data, sankey, graph; - function _calc(trace) { - var gd = { data: [trace] }; - - supplyAllDefaults(gd); - var fullTrace = gd._fullData[0]; - return Sankey.calc(gd, fullTrace); - } + describe('implements d3-sankey compatible API', function() { + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircular.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); - beforeEach(function() { - data = _calc(mockCircular.data[0]); - data = { - nodes: data[0]._nodes, - links: data[0]._links - }; - sankey = d3SankeyCircular - .sankeyCircular() - .iterations(32) - .circularLinkGap(2) - .nodePadding(10) - .size([500, 500]) - .nodeId(function(d) { - return d.pointNumber; - }) - .nodes(data.nodes) - .links(data.links); + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(2, 'there are two circular links'); + }); - graph = sankey(); - }); + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray(graph.nodes, 'depth', [0, 0, 2, 3, 1, 1]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + }); - it('creates a graph with circular links', function() { - expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); - var circularLinks = graph.links.filter(function(link) { - return link.circular; + it('keep a list of nodes with positions in x and y', function() { + checkRoundedArray(graph.nodes, 'x0', [72, 72, 267, 365, 169, 169]); + checkRoundedArray(graph.nodes, 'y0', [303, 86, 72, 109, 86, 359]); }); - expect(circularLinks.length).toEqual(2, 'there are two circular links'); - }); - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray(graph.nodes, 'depth', [0, 0, 2, 3, 1, 1]); - checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); - }); + it('supports column reordering', function() { + var reorder = [ 2, 2, 1, 1, 0, 0 ]; - it('keep a list of nodes with positions in x and y', function() { - checkRoundedArray(graph.nodes, 'x0', [72, 72, 267, 365, 169, 169]); - checkRoundedArray(graph.nodes, 'y0', [303, 86, 72, 109, 86, 359]); - }); + checkArray(graph.nodes, 'column', [0, 0, 2, 3, 1, 1]); - it('supports column reordering', function() { - var reorder = [ 2, 2, 1, 1, 0, 0 ]; + var a = graph.nodes[0].x0; + sankey.nodeAlign(function(node) { + return reorder[node.pointNumber]; + }); + graph = sankey(); + checkArray(graph.nodes, 'column', [2, 2, 1, 1, 0, 0]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + var b = graph.nodes[0].x0; + expect(a).not.toEqual(b); + }); - checkArray(graph.nodes, 'column', [0, 0, 2, 3, 1, 1]); + it('updates links vertical position and circularLinkType upon moving nodes', function() { + var linkIndex = 6; + var nodeIndex = 2; + var delta = [0, 400]; - var a = graph.nodes[0].x0; - sankey.nodeAlign(function(node) { - return reorder[node.pointNumber]; - }); - graph = sankey(); - checkArray(graph.nodes, 'column', [2, 2, 1, 1, 0, 0]); - checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); - var b = graph.nodes[0].x0; - expect(a).not.toEqual(b); - }); + var link = graph.links[linkIndex]; + var linkY1 = link.y1; + var node = graph.nodes[nodeIndex]; + var offsetTopToBottom = (node.y1 - node.y0) * link.value / node.value; - it('updates links vertical position and circularLinkType upon moving nodes', function() { - var linkIndex = 6; - var nodeIndex = 2; - var delta = [0, 400]; + // Start with a circular link on top + expect(link.circular).toBeTruthy(); + expect(link.circularLinkType).toEqual('top'); - var link = graph.links[linkIndex]; - var linkY1 = link.y1; - var node = graph.nodes[nodeIndex]; - var offsetTopToBottom = (node.y1 - node.y0) * link.value / node.value; + // Update graph + var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); + var updatedLink = updatedGraph.links[linkIndex]; - // Start with a circular link on top - expect(link.circular).toBeTruthy(); - expect(link.circularLinkType).toEqual('top'); + // End up with a cirular link on bottom + expect(updatedLink.circular).toBeTruthy(); + expect(updatedLink.circularLinkType).toEqual('bottom'); + expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); + }); + }); - // Update graph - var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); - var updatedLink = updatedGraph.links[linkIndex]; + describe('handles large number of links', function() { + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircularLarge.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); - // End up with a cirular link on bottom - expect(updatedLink.circular).toBeTruthy(); - expect(updatedLink.circularLinkType).toEqual('bottom'); - expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(26, 'right number of nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(89, 'right number of circular links'); + }); }); }); });