Skip to content

Commit 13491ee

Browse files
authored
default base 10 log ticks to ~s (#255)
1 parent 0561e75 commit 13491ee

File tree

2 files changed

+40
-40
lines changed

2 files changed

+40
-40
lines changed

src/log.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export function loggish(transform) {
108108

109109
scale.tickFormat = (count, specifier) => {
110110
if (count == null) count = 10;
111-
if (specifier == null) specifier = base === 10 ? ".0e" : ",";
111+
if (specifier == null) specifier = base === 10 ? "s" : ",";
112112
if (typeof specifier !== "function") {
113113
if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;
114114
specifier = format(specifier);

test/log-test.js

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ it("log.domain(…) coerces values to numbers", () => {
4242
it("log.domain(…) can take negative values", () => {
4343
const x = scaleLog().domain([-100, -1]);
4444
assert.deepStrictEqual(x.ticks().map(x.tickFormat(Infinity)), [
45-
"−1e+2",
46-
"−9e+1", "−8e+1", "−7e+1", "−6e+1", "−5e+1", "−4e+1", "−3e+1", "−2e+1", "−1e+1",
47-
"−9e+0", "−8e+0", "−7e+0", "−6e+0", "−5e+0", "−4e+0", "−3e+0", "−2e+0", "−1e+0"
45+
"−100",
46+
"−90", "−80", "−70", "−60", "−50", "−40", "−30", "−20", "−10",
47+
"−9", "−8", "−7", "−6", "−5", "−4", "−3", "−2", "−1"
4848
]);
4949
assertInDelta(x(-50), 0.150515);
5050
});
@@ -297,15 +297,15 @@ it("log.base(base).ticks() generates the expected power-of-base ticks", () => {
297297

298298
it("log.tickFormat() is equivalent to log.tickFormat(10)", () => {
299299
const s = scaleLog();
300-
assert.deepStrictEqual(s.domain([1e-1, 1e1]).ticks().map(s.tickFormat()), ["1e-1", "2e-1", "3e-1", "4e-1", "5e-1", "", "", "", "", "1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "", "", "", "", "1e+1"]);
300+
assert.deepStrictEqual(s.domain([1e-1, 1e1]).ticks().map(s.tickFormat()), ["100m", "200m", "300m", "400m", "500m", "", "", "", "", "1", "2", "3", "4", "5", "", "", "", "", "10"]);
301301
});
302302

303-
it("log.tickFormat(count) returns a filtered \".0e\" format", () => {
303+
it("log.tickFormat(count) returns a filtered \"s\" format", () => {
304304
const s = scaleLog(), t = s.domain([1e-1, 1e1]).ticks();
305-
assert.deepStrictEqual(t.map(s.tickFormat(10)), ["1e-1", "2e-1", "3e-1", "4e-1", "5e-1", "", "", "", "", "1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "", "", "", "", "1e+1"]);
306-
assert.deepStrictEqual(t.map(s.tickFormat(5)), ["1e-1", "2e-1", "", "", "", "", "", "", "", "1e+0", "2e+0", "", "", "", "", "", "", "", "1e+1"]);
307-
assert.deepStrictEqual(t.map(s.tickFormat(1)), ["1e-1", "", "", "", "", "", "", "", "", "1e+0", "", "", "", "", "", "", "", "", "1e+1"]);
308-
assert.deepStrictEqual(t.map(s.tickFormat(0)), ["1e-1", "", "", "", "", "", "", "", "", "1e+0", "", "", "", "", "", "", "", "", "1e+1"]);
305+
assert.deepStrictEqual(t.map(s.tickFormat(10)), ["100m", "200m", "300m", "400m", "500m", "", "", "", "", "1", "2", "3", "4", "5", "", "", "", "", "10"]);
306+
assert.deepStrictEqual(t.map(s.tickFormat(5)), ["100m", "200m", "", "", "", "", "", "", "", "1", "2", "", "", "", "", "", "", "", "10"]);
307+
assert.deepStrictEqual(t.map(s.tickFormat(1)), ["100m", "", "", "", "", "", "", "", "", "1", "", "", "", "", "", "", "", "", "10"]);
308+
assert.deepStrictEqual(t.map(s.tickFormat(0)), ["100m", "", "", "", "", "", "", "", "", "1", "", "", "", "", "", "", "", "", "10"]);
309309
});
310310

311311
it("log.tickFormat(count, format) returns the specified format, filtered", () => {
@@ -328,71 +328,71 @@ it("log.base(base).tickFormat(count) returns a filtered \",\" format", () => {
328328
it("log.ticks() generates log ticks", () => {
329329
const x = scaleLog();
330330
assert.deepStrictEqual(x.ticks().map(x.tickFormat(Infinity)), [
331-
"1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "6e+0", "7e+0", "8e+0", "9e+0",
332-
"1e+1"
331+
"1", "2", "3", "4", "5", "6", "7", "8", "9",
332+
"10"
333333
]);
334334
x.domain([100, 1]);
335335
assert.deepStrictEqual(x.ticks().map(x.tickFormat(Infinity)), [
336-
"1e+2",
337-
"9e+1", "8e+1", "7e+1", "6e+1", "5e+1", "4e+1", "3e+1", "2e+1", "1e+1",
338-
"9e+0", "8e+0", "7e+0", "6e+0", "5e+0", "4e+0", "3e+0", "2e+0", "1e+0"
336+
"100",
337+
"90", "80", "70", "60", "50", "40", "30", "20", "10",
338+
"9", "8", "7", "6", "5", "4", "3", "2", "1"
339339
]);
340340
x.domain([0.49999, 0.006029505943610648]);
341341
assert.deepStrictEqual(x.ticks().map(x.tickFormat(Infinity)), [
342-
"4e-1", "3e-1", "2e-1", "1e-1",
343-
"9e-2", "8e-2", "7e-2", "6e-2", "5e-2", "4e-2", "3e-2", "2e-2", "1e-2",
344-
"9e-3", "8e-3", "7e-3"
342+
"400m", "300m", "200m", "100m",
343+
"90m", "80m", "70m", "60m", "50m", "40m", "30m", "20m", "10m",
344+
"9m", "8m", "7m"
345345
]);
346346
x.domain([0.95, 1.05e8]);
347347
assert.deepStrictEqual(x.ticks().map(x.tickFormat(8)).filter(String), [
348-
"1e+0", "1e+1", "1e+2", "1e+3", "1e+4", "1e+5", "1e+6", "1e+7", "1e+8"
348+
"1", "10", "100", "1k", "10k", "100k", "1M", "10M", "100M"
349349
]);
350350
});
351351

352352
it("log.tickFormat(count) filters ticks to about count", () => {
353353
const x = scaleLog();
354354
assert.deepStrictEqual(x.ticks().map(x.tickFormat(5)), [
355-
"1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "", "", "", "",
356-
"1e+1"
355+
"1", "2", "3", "4", "5", "", "", "", "",
356+
"10"
357357
]);
358358
x.domain([100, 1]);
359359
assert.deepStrictEqual(x.ticks().map(x.tickFormat(10)), [
360-
"1e+2",
361-
"", "", "", "", "5e+1", "4e+1", "3e+1", "2e+1", "1e+1",
362-
"", "", "", "", "5e+0", "4e+0", "3e+0", "2e+0", "1e+0"
360+
"100",
361+
"", "", "", "", "50", "40", "30", "20", "10",
362+
"", "", "", "", "5", "4", "3", "2", "1"
363363
]);
364364
});
365365

366366
it("log.ticks(count) filters powers-of-ten ticks for huge domains", () => {
367367
const x = scaleLog().domain([1e10, 1]);
368-
assert.deepStrictEqual(x.ticks().map(x.tickFormat()), ["1e+10", "1e+9", "1e+8", "1e+7", "1e+6", "1e+5", "1e+4", "1e+3", "1e+2", "1e+1", "1e+0"]);
368+
assert.deepStrictEqual(x.ticks().map(x.tickFormat()), ["10G", "1G", "100M", "10M", "1M", "100k", "10k", "1k", "100", "10", "1"]);
369369
x.domain([1e-29, 1e-1]);
370-
assert.deepStrictEqual(x.ticks().map(x.tickFormat()), ["1e-28", "1e-26", "1e-24", "1e-22", "1e-20", "1e-18", "1e-16", "1e-14", "1e-12", "1e-10", "1e-8", "1e-6", "1e-4", "1e-2"]);
370+
assert.deepStrictEqual(x.ticks().map(x.tickFormat()), ["0.0001y", "0.01y", "1y", "100y", "10z", "1a", "100a", "10f", "1p", "100p", "10n", "", "100µ", "10m"]);
371371
});
372372

373373
it("log.ticks() generates ticks that cover the domain", () => {
374374
const x = scaleLog().domain([0.01, 10000]);
375375
assert.deepStrictEqual(x.ticks(20).map(x.tickFormat(20)), [
376-
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
377-
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
378-
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
379-
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
380-
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
381-
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
382-
"1e+4"
376+
"10m", "20m", "30m", "", "", "", "", "", "",
377+
"100m", "200m", "300m", "", "", "", "", "", "",
378+
"1", "2", "3", "", "", "", "", "", "",
379+
"10", "20", "30", "", "", "", "", "", "",
380+
"100", "200", "300", "", "", "", "", "", "",
381+
"1k", "2k", "3k", "", "", "", "", "", "",
382+
"10k"
383383
]);
384384
});
385385

386386
it("log.ticks() generates ticks that cover the niced domain", () => {
387387
const x = scaleLog().domain([0.0124123, 1230.4]).nice();
388388
assert.deepStrictEqual(x.ticks(20).map(x.tickFormat(20)), [
389-
"1e-2", "2e-2", "3e-2", "", "", "", "", "", "",
390-
"1e-1", "2e-1", "3e-1", "", "", "", "", "", "",
391-
"1e+0", "2e+0", "3e+0", "", "", "", "", "", "",
392-
"1e+1", "2e+1", "3e+1", "", "", "", "", "", "",
393-
"1e+2", "2e+2", "3e+2", "", "", "", "", "", "",
394-
"1e+3", "2e+3", "3e+3", "", "", "", "", "", "",
395-
"1e+4"
389+
"10m", "20m", "30m", "", "", "", "", "", "",
390+
"100m", "200m", "300m", "", "", "", "", "", "",
391+
"1", "2", "3", "", "", "", "", "", "",
392+
"10", "20", "30", "", "", "", "", "", "",
393+
"100", "200", "300", "", "", "", "", "", "",
394+
"1k", "2k", "3k", "", "", "", "", "", "",
395+
"10k"
396396
]);
397397
});
398398

0 commit comments

Comments
 (0)