Add test for scale.quantile.
This commit is contained in:
Родитель
d6f4b2a299
Коммит
cdfbca94a5
|
@ -0,0 +1,64 @@
|
|||
require("../env");
|
||||
require("../../d3");
|
||||
|
||||
var vows = require("vows"),
|
||||
assert = require("assert");
|
||||
|
||||
var suite = vows.describe("d3.scale.quantile");
|
||||
|
||||
suite.addBatch({
|
||||
"quantile": {
|
||||
topic: function() {
|
||||
return d3.scale.quantile;
|
||||
},
|
||||
"has the empty domain by default": function(quantile) {
|
||||
assert.isEmpty(quantile().domain());
|
||||
},
|
||||
"has the empty range by default": function(quantile) {
|
||||
assert.isEmpty(quantile().range());
|
||||
},
|
||||
"uses the R-7 algorithm to compute quantiles": function(quantile) {
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
|
||||
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
|
||||
assert.deepEqual([8, 8.9].map(x), [1, 1]);
|
||||
assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
|
||||
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
|
||||
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
|
||||
assert.deepEqual([8, 8.9].map(x), [1, 1]);
|
||||
assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
|
||||
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
|
||||
},
|
||||
"domain values are sorted in ascending order": function(quantile) {
|
||||
var x = d3.scale.quantile().domain([6, 3, 7, 8, 8, 13, 20, 15, 16, 10]);
|
||||
assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
|
||||
},
|
||||
"non-numeric domain values are ignored": function(quantile) {
|
||||
var x = d3.scale.quantile().domain([6, 3, NaN, undefined, 7, 8, 8, 13, 20, 15, 16, 10, NaN]);
|
||||
assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
|
||||
},
|
||||
"quantiles returns the inner thresholds": function(quantile) {
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
|
||||
assert.deepEqual(x.quantiles(), [7.25, 9, 14.5]);
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
|
||||
assert.deepEqual(x.quantiles(), [7.5, 9, 14]);
|
||||
},
|
||||
"range cardinality determines the number of quantiles": function(quantile) {
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);;
|
||||
assert.deepEqual(x.range([0, 1, 2, 3]).quantiles(), [7.25, 9, 14.5]);
|
||||
assert.deepEqual(x.range([0, 1]).quantiles(), [9]);
|
||||
assert.deepEqual(x.range([,,,,,]).quantiles(), [6.8, 8, 11.2, 15.2]);
|
||||
assert.deepEqual(x.range([,,,,,,]).quantiles(), [6.5, 8, 9, 13, 15.5]);
|
||||
},
|
||||
"range values are arbitrary": function(quantile) {
|
||||
var a = new Object(), b = new Object(), c = new Object();
|
||||
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([a, b, c, a]);
|
||||
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [a, a, a, a, a]);
|
||||
assert.deepEqual([8, 8.9].map(x), [b, b]);
|
||||
assert.deepEqual([9, 9.1, 10, 13].map(x), [c, c, c, c]);
|
||||
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [a, a, a, a, a]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
suite.export(module);
|
|
@ -1,142 +0,0 @@
|
|||
require("./../../lib/env-js/envjs/node");
|
||||
require("./../../d3");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20])
|
||||
.range([0, 1, 2, 3]);
|
||||
|
||||
console.log("domain(3, 6, 7, 8, 8, 10, 13, 15, 16, 20).range(0, 1, 2, 3):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 6 -> " + x(6));
|
||||
console.log(" 6.9 -> " + x(6.9));
|
||||
console.log(" 7 -> " + x(7));
|
||||
console.log(" 7.1 -> " + x(7.1));
|
||||
console.log(" 8 -> " + x(8));
|
||||
console.log(" 8.9 -> " + x(8.9));
|
||||
console.log(" 9 -> " + x(9));
|
||||
console.log(" 9.1 -> " + x(9.1));
|
||||
console.log(" 10 -> " + x(10));
|
||||
console.log(" 13 -> " + x(13));
|
||||
console.log(" 14.9 -> " + x(14.9));
|
||||
console.log(" 15 -> " + x(15));
|
||||
console.log(" 15.1 -> " + x(15.1));
|
||||
console.log(" 16 -> " + x(16));
|
||||
console.log(" 20 -> " + x(20));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20])
|
||||
.range([0, 1, 2, 3]);
|
||||
|
||||
console.log("domain(3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20).range(0, 1, 2, 3):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 6 -> " + x(6));
|
||||
console.log(" 6.9 -> " + x(6.9));
|
||||
console.log(" 7 -> " + x(7));
|
||||
console.log(" 7.1 -> " + x(7.1));
|
||||
console.log(" 8 -> " + x(8));
|
||||
console.log(" 8.9 -> " + x(8.9));
|
||||
console.log(" 9 -> " + x(9));
|
||||
console.log(" 9.1 -> " + x(9.1));
|
||||
console.log(" 10 -> " + x(10));
|
||||
console.log(" 13 -> " + x(13));
|
||||
console.log(" 14.9 -> " + x(14.9));
|
||||
console.log(" 15 -> " + x(15));
|
||||
console.log(" 15.1 -> " + x(15.1));
|
||||
console.log(" 16 -> " + x(16));
|
||||
console.log(" 20 -> " + x(20));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([0, 1])
|
||||
.range([0, 1]);
|
||||
|
||||
console.log("domain(0, 1).range(0, 1):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" -.5 -> " + x(-.5));
|
||||
console.log(" 0 -> " + x(0));
|
||||
console.log(" .49 -> " + x(.49));
|
||||
console.log(" .51 -> " + x(.51));
|
||||
console.log(" 1 -> " + x(1));
|
||||
console.log(" 1.5 -> " + x(1.5));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([1, 2, 3, 4])
|
||||
.range(["a", "b"]);
|
||||
|
||||
console.log("domain(1, 2, 3, 4).range(a, b):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 0 -> " + x(0));
|
||||
console.log(" 1 -> " + x(1));
|
||||
console.log(" 2 -> " + x(2));
|
||||
console.log(" 2.49 -> " + x(2.49));
|
||||
console.log(" 2.51 -> " + x(2.51));
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 4 -> " + x(4));
|
||||
console.log(" 5 -> " + x(5));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([1, 2, 3, 4])
|
||||
.range(["a", "b", "c"]);
|
||||
|
||||
console.log("domain(1, 2, 3, 4).range(a, b, c):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 0 -> " + x(0));
|
||||
console.log(" 1 -> " + x(1));
|
||||
console.log(" 1.9 -> " + x(1.9));
|
||||
console.log(" 2 -> " + x(2));
|
||||
console.log(" 2.1 -> " + x(2.1));
|
||||
console.log(" 2.9 -> " + x(2.9));
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 3.1 -> " + x(3.1));
|
||||
console.log(" 4 -> " + x(4));
|
||||
console.log(" 5 -> " + x(5));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([1, 1, 2, 2, 3, 3, 4, 4])
|
||||
.range(["a", "b", "c", "d"]);
|
||||
|
||||
console.log("domain(1, 1, 2, 2, 3, 3, 4, 4).range(a, b, c, d):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 0 -> " + x(0));
|
||||
console.log(" 1 -> " + x(1));
|
||||
console.log(" 1.49 -> " + x(1.49));
|
||||
console.log(" 1.51 -> " + x(1.51));
|
||||
console.log(" 2 -> " + x(2));
|
||||
console.log(" 2.49 -> " + x(2.49));
|
||||
console.log(" 2.51 -> " + x(2.51));
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 3.49 -> " + x(3.49));
|
||||
console.log(" 3.51 -> " + x(3.51));
|
||||
console.log(" 4 -> " + x(4));
|
||||
console.log(" 5 -> " + x(5));
|
||||
console.log("");
|
||||
|
||||
var x = d3.scale.quantile()
|
||||
.domain([1, 2, 3, 4, 5, 6, 7, 8])
|
||||
.range(["a", "b", "c", "d"]);
|
||||
|
||||
console.log("domain(1, 2, 3, 4, 5, 6, 7, 8).range(a, b, c, d):");
|
||||
console.log(" quantiles -> " + x.quantiles());
|
||||
console.log(" 0 -> " + x(0));
|
||||
console.log(" 1 -> " + x(1));
|
||||
console.log(" 2 -> " + x(2));
|
||||
console.log(" 2.49 -> " + x(2.49));
|
||||
console.log(" 2.51 -> " + x(2.51));
|
||||
console.log(" 3 -> " + x(3));
|
||||
console.log(" 4 -> " + x(4));
|
||||
console.log(" 4.49 -> " + x(4.49));
|
||||
console.log(" 4.51 -> " + x(4.51));
|
||||
console.log(" 5 -> " + x(5));
|
||||
console.log(" 6 -> " + x(6));
|
||||
console.log(" 6.49 -> " + x(6.49));
|
||||
console.log(" 6.51 -> " + x(6.51));
|
||||
console.log(" 7 -> " + x(7));
|
||||
console.log(" 8 -> " + x(8));
|
||||
console.log(" 9 -> " + x(9));
|
||||
console.log("");
|
|
@ -1,105 +0,0 @@
|
|||
domain(3, 6, 7, 8, 8, 10, 13, 15, 16, 20).range(0, 1, 2, 3):
|
||||
quantiles -> 7.25,9,14.5
|
||||
3 -> 0
|
||||
6 -> 0
|
||||
6.9 -> 0
|
||||
7 -> 0
|
||||
7.1 -> 0
|
||||
8 -> 1
|
||||
8.9 -> 1
|
||||
9 -> 2
|
||||
9.1 -> 2
|
||||
10 -> 2
|
||||
13 -> 2
|
||||
14.9 -> 3
|
||||
15 -> 3
|
||||
15.1 -> 3
|
||||
16 -> 3
|
||||
20 -> 3
|
||||
|
||||
domain(3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20).range(0, 1, 2, 3):
|
||||
quantiles -> 7.5,9,14
|
||||
3 -> 0
|
||||
6 -> 0
|
||||
6.9 -> 0
|
||||
7 -> 0
|
||||
7.1 -> 0
|
||||
8 -> 1
|
||||
8.9 -> 1
|
||||
9 -> 2
|
||||
9.1 -> 2
|
||||
10 -> 2
|
||||
13 -> 2
|
||||
14.9 -> 3
|
||||
15 -> 3
|
||||
15.1 -> 3
|
||||
16 -> 3
|
||||
20 -> 3
|
||||
|
||||
domain(0, 1).range(0, 1):
|
||||
quantiles -> 0.5
|
||||
-.5 -> 0
|
||||
0 -> 0
|
||||
.49 -> 0
|
||||
.51 -> 1
|
||||
1 -> 1
|
||||
1.5 -> 1
|
||||
|
||||
domain(1, 2, 3, 4).range(a, b):
|
||||
quantiles -> 2.5
|
||||
0 -> a
|
||||
1 -> a
|
||||
2 -> a
|
||||
2.49 -> a
|
||||
2.51 -> b
|
||||
3 -> b
|
||||
4 -> b
|
||||
5 -> b
|
||||
|
||||
domain(1, 2, 3, 4).range(a, b, c):
|
||||
quantiles -> 2,3
|
||||
0 -> a
|
||||
1 -> a
|
||||
1.9 -> a
|
||||
2 -> b
|
||||
2.1 -> b
|
||||
2.9 -> b
|
||||
3 -> c
|
||||
3.1 -> c
|
||||
4 -> c
|
||||
5 -> c
|
||||
|
||||
domain(1, 1, 2, 2, 3, 3, 4, 4).range(a, b, c, d):
|
||||
quantiles -> 1.75,2.5,3.25
|
||||
0 -> a
|
||||
1 -> a
|
||||
1.49 -> a
|
||||
1.51 -> a
|
||||
2 -> b
|
||||
2.49 -> b
|
||||
2.51 -> c
|
||||
3 -> c
|
||||
3.49 -> d
|
||||
3.51 -> d
|
||||
4 -> d
|
||||
5 -> d
|
||||
|
||||
domain(1, 2, 3, 4, 5, 6, 7, 8).range(a, b, c, d):
|
||||
quantiles -> 2.75,4.5,6.25
|
||||
0 -> a
|
||||
1 -> a
|
||||
2 -> a
|
||||
2.49 -> a
|
||||
2.51 -> a
|
||||
3 -> b
|
||||
4 -> b
|
||||
4.49 -> b
|
||||
4.51 -> c
|
||||
5 -> c
|
||||
6 -> c
|
||||
6.49 -> d
|
||||
6.51 -> d
|
||||
7 -> d
|
||||
8 -> d
|
||||
9 -> d
|
||||
|
Загрузка…
Ссылка в новой задаче