-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automatic binning when a facet dimension is quantitative? #14
Comments
Borrowing from cartography we would want to use Jenks natural breaks or k-means, not only quantize. Seems particularly relevant for faceting, to avoid creating spurious (almost empty) facets. E.g. if the dimension has 3 modes we want those modes as the facets. This would be done, I guess, by specifying the thresholds (or threshold generator) to d3.bin. For a relevant example, I combined ac93f58 with simple-statistics' ckmeans method to cluster countries by GDP per cap: These 4 clusters would be my facets. |
The default thresholds using d3.ticks have the nice property that the axis documents the threshold values. I wonder if you specify alternative thresholds if there would be a convenient way to use those threshold values as ticks also — it’s hard to tell in the screenshot above exactly where the thresholds are. Though, I suppose exactness is not essential and they’re probably not nice round values anyway. |
The https://observablehq.com/d/e87ba37a7b86bb94#ckMeansNiceThresholds function returns "not so ugly" thresholds, I suppose we could use them as ticks: for example : [14500, 38000, 80000]. |
Adding |
The interval scale option is a great workaround for this issue. It’s not automatic since the interval isn’t computed automatically, but it makes it very easy to bin while faceting. For example: Plot.plot({
fy: {
grid: true,
tickFormat: ".1f",
interval: 0.1,
reverse: true
},
marks: [
Plot.boxX(olympians.filter((d) => d.height), {x: "weight", fy: "height"})
]
}) |
It’d be neat if you could use a quantitative dimension for faceting, and we automatically binned it (say using d3.bin) into a reasonable number of facets.
The text was updated successfully, but these errors were encountered: