Fix another rounding bug in log.ticks.

This commit is contained in:
Mike Bostock 2013-07-11 13:48:46 -07:00
Родитель 4162116088
Коммит 595547389b
4 изменённых файлов: 32 добавлений и 8 удалений

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

@ -6835,9 +6835,9 @@ d3 = function() {
return scale;
};
scale.ticks = function() {
var extent = d3_scaleExtent(linear.domain()), ticks = [];
var extent = d3_scaleExtent(domain), ticks = [];
if (extent.every(isFinite)) {
var i = Math.floor(extent[0]), j = Math.ceil(extent[1]), u = pow(extent[0]), v = pow(extent[1]), n = base % 1 ? 2 : base;
var i = Math.floor(log(extent[0])), j = Math.ceil(log(extent[1])), u = extent[0], v = extent[1], n = base % 1 ? 2 : base;
if (positive) {
for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);
ticks.push(Math.pow(base, i));

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

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

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

@ -44,13 +44,13 @@ function d3_scale_log(linear, base, positive, domain) {
};
scale.ticks = function() {
var extent = d3_scaleExtent(linear.domain()),
var extent = d3_scaleExtent(domain),
ticks = [];
if (extent.every(isFinite)) {
var i = Math.floor(extent[0]),
j = Math.ceil(extent[1]),
u = pow(extent[0]),
v = pow(extent[1]),
var i = Math.floor(log(extent[0])),
j = Math.ceil(log(extent[1])),
u = extent[0],
v = extent[1],
n = base % 1 ? 2 : base;
if (positive) {
for (; i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);

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

@ -206,6 +206,30 @@ suite.addBatch({
"1e+10"
]);
},
"generates ticks that cover the domain": function(d3) {
var x = d3.scale.log().domain([.01, 10000]);
assert.deepEqual(x.ticks(20).map(x.tickFormat(20)), [
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
"1e+4"
]);
},
"generates ticks that cover the niced domain": function(d3) {
var x = d3.scale.log().domain([.0124123, 1230.4]).nice();
assert.deepEqual(x.ticks(20).map(x.tickFormat(20)), [
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
"1e+4"
]);
},
"can override the tick format": function(d3) {
var x = d3.scale.log().domain([1000.1, 1]);
assert.deepEqual(x.ticks().map(x.tickFormat(10, d3.format("+,d"))), [