temporal tick format#321
Merged
Merged
Conversation
mbostock
reviewed
Apr 15, 2021
| } | ||
|
|
||
| function maybeFormat(fmt, domain) { | ||
| if (fmt == null) return isTemporal(domain) ? scaleUtc().tickFormat() : fmt; |
Member
There was a problem hiding this comment.
We should use === undefined here; null should be interpreted as “don’t show any tick labels”.
Also, I think we want to use the same default date formatter as Observable Inputs’ Table (which is the same one that’s used by Observable’s inspector and d3-dsv):
The reason being: dates in an ordinal dimension, unlike ticks on a temporal scale, are not necessarily at regular intervals. The formatter I recommend will return a string that’s “as small as possible” without losing any information about what date is being shown.
When a point or band scale is based on time values, use a time format for ticks; the default time format is the multi-time format from utcScale, but can be overridden with tickFormat: "%a". Similarly, if the point or band scale is based on numeric (ie non-ordinal) values, tickFormat: "," is interpreted with d3.format. closes #212
d7d49cb to
0da89ef
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a point or band scale is based on time values, use a time format for ticks; the default time format is the multi-time format from utcScale, but can be overridden with tickFormat: "%a". Similarly, if the point or band scale is based on numeric (ie non-ordinal) values, tickFormat: "," is interpreted with d3.format.
closes #212
I'm sorry that this PR is not pretty; a part of the problem is that d3's original scaleBand and scalePoint aren't behaving like scaleLinear and scaleUtc (ie they don't have a tickFormat method). ((The main part though is just me not finding the style.))
As a result, with no specific settings in x we get:
and
x: {tickFormat: "%a"}or whatever if we want to personalize the scale.