diff --git a/src/layouts/dodge.js b/src/layouts/dodge.js index 5e7371519b..99fb199286 100644 --- a/src/layouts/dodge.js +++ b/src/layouts/dodge.js @@ -1,6 +1,5 @@ import {max} from "d3"; import IntervalTree from "interval-tree-1d"; -import {maybeNumberChannel} from "../options.js"; import {layout} from "./index.js"; const anchorXLeft = ({marginLeft}) => [1, marginLeft]; @@ -39,8 +38,8 @@ export function dodgeY(dodgeOptions = {}, options = {}) { } function dodge(y, x, anchor, padding, options) { - const [, r] = maybeNumberChannel(options.r, 3); - return layout(options, (I, scales, {[x]: X, r: R}, dimensions) => { + return layout(options, function(I, scales, {[x]: X, r: R}, dimensions) { + const r = R ? undefined : this.r !== undefined ? this.r : options.r !== undefined ? +options.r : 3; if (X == null) throw new Error(`missing channel: ${x}`); let [ky, ty] = anchor(dimensions); const compare = ky ? compareAscending : compareSymmetric; diff --git a/test/output/penguinDodgeSymbol.html b/test/output/penguinDodgeSymbol.html new file mode 100644 index 0000000000..d0d5921ea2 --- /dev/null +++ b/test/output/penguinDodgeSymbol.html @@ -0,0 +1,428 @@ +
+
+ + + Adelie + + Chinstrap + + Gentoo +
+ + + + 3,000 + + + 3,500 + + + 4,000 + + + 4,500 + + + 5,000 + + + 5,500 + + + 6,000 + body_mass_g → + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/test/plots/index.js b/test/plots/index.js index df7cc1044e..23c029052c 100644 --- a/test/plots/index.js +++ b/test/plots/index.js @@ -88,6 +88,7 @@ export {default as ordinalBar} from "./ordinal-bar.js"; export {default as penguinCulmen} from "./penguin-culmen.js"; export {default as penguinCulmenArray} from "./penguin-culmen-array.js"; export {default as penguinDodge} from "./penguin-dodge.js"; +export {default as penguinDodgeSymbol} from "./penguin-dodge-symbol.js"; export {default as penguinFacetDodge} from "./penguin-facet-dodge.js"; export {default as penguinIslandUnknown} from "./penguin-island-unknown.js"; export {default as penguinMass} from "./penguin-mass.js"; diff --git a/test/plots/penguin-dodge-symbol.js b/test/plots/penguin-dodge-symbol.js new file mode 100644 index 0000000000..c00cd580e5 --- /dev/null +++ b/test/plots/penguin-dodge-symbol.js @@ -0,0 +1,19 @@ +import * as Plot from "@observablehq/plot"; +import * as d3 from "d3"; + +export default async function() { + const penguins = await d3.csv("data/penguins.csv", d3.autoType); + return Plot.plot({ + height: 220, + marks: [ + Plot.dot(penguins, Plot.dodgeY({ + x: "body_mass_g", + symbol: "species", + fill: "species", + stroke: "white", + strokeWidth: .5 + })) + ], + symbol: {legend: true} + }); +}