Skip to content

Commit 5955473

Browse files
committed
Fix another rounding bug in log.ticks.
1 parent 4162116 commit 5955473

4 files changed

Lines changed: 32 additions & 8 deletions

File tree

d3.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6835,9 +6835,9 @@ d3 = function() {
68356835
return scale;
68366836
};
68376837
scale.ticks = function() {
6838-
var extent = d3_scaleExtent(linear.domain()), ticks = [];
6838+
var extent = d3_scaleExtent(domain), ticks = [];
68396839
if (extent.every(isFinite)) {
6840-
var i = Math.floor(extent[0]), j = Math.ceil(extent[1]), u = pow(extent[0]), v = pow(extent[1]), n = base % 1 ? 2 : base;
6840+
var i = Math.floor(log(extent[0])), j = Math.ceil(log(extent[1])), u = extent[0], v = extent[1], n = base % 1 ? 2 : base;
68416841
if (positive) {
68426842
for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);
68436843
ticks.push(Math.pow(base, i));

d3.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/scale/log.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ function d3_scale_log(linear, base, positive, domain) {
4444
};
4545

4646
scale.ticks = function() {
47-
var extent = d3_scaleExtent(linear.domain()),
47+
var extent = d3_scaleExtent(domain),
4848
ticks = [];
4949
if (extent.every(isFinite)) {
50-
var i = Math.floor(extent[0]),
51-
j = Math.ceil(extent[1]),
52-
u = pow(extent[0]),
53-
v = pow(extent[1]),
50+
var i = Math.floor(log(extent[0])),
51+
j = Math.ceil(log(extent[1])),
52+
u = extent[0],
53+
v = extent[1],
5454
n = base % 1 ? 2 : base;
5555
if (positive) {
5656
for (; i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);

test/scale/log-test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,30 @@ suite.addBatch({
206206
"1e+10"
207207
]);
208208
},
209+
"generates ticks that cover the domain": function(d3) {
210+
var x = d3.scale.log().domain([.01, 10000]);
211+
assert.deepEqual(x.ticks(20).map(x.tickFormat(20)), [
212+
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
213+
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
214+
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
215+
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
216+
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
217+
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
218+
"1e+4"
219+
]);
220+
},
221+
"generates ticks that cover the niced domain": function(d3) {
222+
var x = d3.scale.log().domain([.0124123, 1230.4]).nice();
223+
assert.deepEqual(x.ticks(20).map(x.tickFormat(20)), [
224+
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
225+
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
226+
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
227+
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
228+
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
229+
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
230+
"1e+4"
231+
]);
232+
},
209233
"can override the tick format": function(d3) {
210234
var x = d3.scale.log().domain([1000.1, 1]);
211235
assert.deepEqual(x.ticks().map(x.tickFormat(10, d3.format("+,d"))), [

0 commit comments

Comments
 (0)