Mike Bostock
Mike Bostock
Here’s another take of the inverse operation, replacing array.map with Array.from, and replacing array.reduce with Object.fromEntries: ```js Array.from( d3.group(data, d => d.religion), ([religion, group]) => Object.fromEntries( [["religion", religion]].concat( group.map(d =>...
Another difference is that Array.from accepts values like `{length: 42}` whereas D3 only accepts values that are iterable. (This is why we do an explicit test for the Symbol.iterator method...
Perhaps it’s worth introducing two new methods: one for converting an array of objects to an object of arrays, and another for converting an object of arrays to an array...
I think the \n is fine—that’s not really a DSL (at least not a new one). And in the other case you mentioned, you turn off the repetition filter and...
Related https://github.com/d3/d3-selection/issues/67 https://github.com/d3/d3-selection/issues/68 https://github.com/d3/d3-selection/issues/72 https://github.com/d3/d3-selection/issues/81 There’s a long history of browsers not implementing getScreenCTM correctly, and generally speaking I don’t think D3 should attempt to workaround browser bugs or quirks:...
It would also be nice to have meaningful ribbon widths. For example, if the start and end value are the same, the ribbon width should be constant. I believe this...
This is discussed in the circlize documentation for R: https://jokergoo.github.io/circlize_book/book/graphics.html#links
https://observablehq.com/@mbostock/luv-and-hcl
I’m leaning towards the names d3.lab (CIELAB), d3.luv (CIELUV), d3.xyz (CIEXYZ), d3.lchab (CIELCh_ab), d3.lchuv (CIELCh_uv), and the corresponding d3.interpolate* methods (though I’m not sure I’ll bother with d3.interpolateXyz, as I’m...
I’m only planning on deprecating, not removing. We could keep d3.lch (non-deprecated) as CIELCh_ab, but the point is that it would be ambiguous and inconsistent if we also have CIELCh_uv...