For a log scale, the tickFormat function should only be considered for ticks that should be visible
mbostock opened this issue · 0 comments
mbostock commented
Log scales are a bit unusual in that all the ticks are drawn independent of the ticks option; instead, the ticks option only controls which ticks are labeled.
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 7}})
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 10}})
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 20}})
This means that if you set the tickFormat option with a log scale, it (for the most part) ignores the ticks option. These three specifications produce equivalent output:
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 7, tickFormat: String}})
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 10, tickFormat: String}})
Plot.plot({x: {type: "log", domain: [1, 4200], ticks: 20, tickFormat: String}})
It‘d be cleaner if the ticks option filtered the tick labels, composing with the given tickFormat, rather than baking the filtering into the tick format. That way you could override the tick format without affecting the number of displayed ticks.