diff --git a/src/marks/hexgrid.js b/src/marks/hexgrid.js
index b3d131e375..95512c29a0 100644
--- a/src/marks/hexgrid.js
+++ b/src/marks/hexgrid.js
@@ -3,7 +3,7 @@ import {Mark} from "../mark.js";
import {number, singleton} from "../options.js";
import {applyChannelStyles, applyDirectStyles, applyIndirectStyles, applyTransform} from "../style.js";
import {sqrt4_3} from "../symbol.js";
-import {ox, oy} from "../transforms/hexbin.js";
+import {ox} from "../transforms/hexbin.js";
const defaults = {
ariaLabel: "hexgrid",
@@ -26,15 +26,15 @@ export class Hexgrid extends Mark {
const {marginTop, marginRight, marginBottom, marginLeft, width, height} = dimensions;
const x0 = marginLeft - ox,
x1 = width - marginRight - ox,
- y0 = marginTop - oy,
- y1 = height - marginBottom - oy,
+ y0 = marginTop,
+ y1 = height - marginBottom,
rx = binWidth / 2,
ry = rx * sqrt4_3,
hy = ry / 2,
wx = rx * 2,
wy = ry * 1.5,
- i0 = Math.floor(x0 / wx),
- i1 = Math.ceil(x1 / wx),
+ i0 = Math.floor((x0 - rx) / wx),
+ i1 = Math.ceil((x1 + rx) / wx),
j0 = Math.floor((y0 + hy) / wy),
j1 = Math.ceil((y1 - hy) / wy) + 1,
path = `m0,${round(-ry)}l${round(rx)},${round(hy)}v${round(ry)}l${round(-rx)},${round(hy)}`;
@@ -47,7 +47,7 @@ export class Hexgrid extends Mark {
return create("svg:g", context)
.datum(0)
.call(applyIndirectStyles, this, dimensions, context)
- .call(applyTransform, this, {}, ox, oy)
+ .call(applyTransform, this, {}, ox, 0)
.call((g) => g.append("path").call(applyDirectStyles, this).call(applyChannelStyles, this, channels).attr("d", d))
.node();
}
diff --git a/src/transforms/hexbin.js b/src/transforms/hexbin.js
index 51078eb708..5fec7ed6b3 100644
--- a/src/transforms/hexbin.js
+++ b/src/transforms/hexbin.js
@@ -5,13 +5,17 @@ import {sqrt3} from "../symbol.js";
import {initializer} from "./basic.js";
import {hasOutput, maybeGroup, maybeGroupOutputs, maybeSubgroup} from "./group.js";
-// We don’t want the hexagons to align with the edges of the plot frame, as that
-// would cause extreme x-values (the upper bound of the default x-scale domain)
-// to be rounded up into a floating bin to the right of the plot. Therefore,
-// rather than centering the origin hexagon around ⟨0,0⟩ in screen coordinates,
-// we offset slightly to ⟨0.5,0⟩. The hexgrid mark uses the same origin.
-export const ox = 0.5 - offset;
-export const oy = -offset;
+// When a data value lands exactly on a hexbin grid boundary (i.e., the scaled
+// x-coordinate is a half-integer due to the odd-row offset), Math.round would
+// round up into a floating bin outside the plot. We use a custom rounding
+// function that breaks such ties toward the center of the plot, preventing
+// exterior bins on left and right edges.
+export const ox = -offset;
+
+// Rounds x to the nearest integer, breaking .5 ties toward center.
+function round(x, center) {
+ return Math.round(center + (x - center) * (1 - 1e-12));
+}
export function hexbin(outputs = {fill: "count"}, {binWidth, ...options} = {}) {
const {z} = options;
@@ -31,7 +35,7 @@ export function hexbin(outputs = {fill: "count"}, {binWidth, ...options} = {}) {
if (options.symbol === undefined) options.symbol = "hexagon";
if (options.r === undefined && !hasOutput(outputs, "r")) options.r = binWidth / 2;
- return initializer(options, (data, facets, channels, scales, _, context) => {
+ return initializer(options, (data, facets, channels, scales, dimensions, context) => {
let {x: X, y: Y, z: Z, fill: F, stroke: S, symbol: Q} = channels;
if (X === undefined) throw new Error("missing channel: x");
if (Y === undefined) throw new Error("missing channel: y");
@@ -39,6 +43,11 @@ export function hexbin(outputs = {fill: "count"}, {binWidth, ...options} = {}) {
// Get the (either scaled or projected) xy channels.
({x: X, y: Y} = applyPosition(channels, scales, context));
+ // Compute the horizontal midpoint of the frame in pixel space; used by
+ // hbin to break rounding ties toward the center, preventing exterior bins.
+ const {marginRight, marginLeft, width} = dimensions;
+ const mx = (marginLeft + width - marginRight) / 2;
+
// Extract the values for channels that are eligible for grouping; not all
// marks define a z channel, so compute one if it not already computed. If z
// was explicitly set to null, ensure that we don’t subdivide bins.
@@ -65,7 +74,7 @@ export function hexbin(outputs = {fill: "count"}, {binWidth, ...options} = {}) {
const binFacet = [];
for (const o of outputs) o.scope("facet", facet);
for (const [f, I] of maybeGroup(facet, G)) {
- for (const {index: b, extent} of hbin(data, I, X, Y, binWidth)) {
+ for (const {index: b, extent} of hbin(data, I, X, Y, binWidth, mx)) {
binFacet.push(++i);
BX.push(extent.x);
BY.push(extent.y);
@@ -106,15 +115,16 @@ export function hexbin(outputs = {fill: "count"}, {binWidth, ...options} = {}) {
});
}
-function hbin(data, I, X, Y, dx) {
+function hbin(data, I, X, Y, dx, mx) {
const dy = dx * (1.5 / sqrt3);
+ const cx = (mx - ox) / dx;
const bins = new Map();
for (const i of I) {
let px = X[i],
py = Y[i];
if (isNaN(px) || isNaN(py)) continue;
- let pj = Math.round((py = (py - oy) / dy)),
- pi = Math.round((px = (px - ox) / dx - (pj & 1) / 2)),
+ let pj = Math.round((py = py / dy)),
+ pi = round((px = (px - ox) / dx - (pj & 1) / 2), cx - (pj & 1) / 2),
py1 = py - pj;
if (Math.abs(py1) * 3 > 1) {
let px1 = px - pi,
@@ -127,7 +137,7 @@ function hbin(data, I, X, Y, dx) {
const key = `${pi},${pj}`;
let bin = bins.get(key);
if (bin === undefined) {
- bin = {index: [], extent: {data, x: (pi + (pj & 1) / 2) * dx + ox, y: pj * dy + oy}};
+ bin = {index: [], extent: {data, x: (pi + (pj & 1) / 2) * dx + ox, y: pj * dy}};
bins.set(key, bin);
}
bin.index.push(i);
diff --git a/test/output/carsHexbin.html b/test/output/carsHexbin.html
index 581c029b00..1d5ea9fecb 100644
--- a/test/output/carsHexbin.html
+++ b/test/output/carsHexbin.html
@@ -94,134 +94,132 @@
displacement (cc) →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/crosshairHexbin.svg b/test/output/crosshairHexbin.svg
index 201691eb45..a918618fa2 100644
--- a/test/output/crosshairHexbin.svg
+++ b/test/output/crosshairHexbin.svg
@@ -62,245 +62,246 @@
weight →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/output/hexbin.svg b/test/output/hexbin.svg
index 17761d3dea..3f6eb75a8b 100644
--- a/test/output/hexbin.svg
+++ b/test/output/hexbin.svg
@@ -73,201 +73,203 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/hexbinEdge.svg b/test/output/hexbinEdge.svg
new file mode 100644
index 0000000000..4c63afccd6
--- /dev/null
+++ b/test/output/hexbinEdge.svg
@@ -0,0 +1,500 @@
+
\ No newline at end of file
diff --git a/test/output/hexbinFillX.svg b/test/output/hexbinFillX.svg
index 1723fcc7ea..33c4c8bcb8 100644
--- a/test/output/hexbinFillX.svg
+++ b/test/output/hexbinFillX.svg
@@ -73,201 +73,203 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/hexbinIdentityReduce.svg b/test/output/hexbinIdentityReduce.svg
index d3e27c2d03..5c8944d55f 100644
--- a/test/output/hexbinIdentityReduce.svg
+++ b/test/output/hexbinIdentityReduce.svg
@@ -77,321 +77,322 @@
-
+
- A
- A
- A
- A
- A
- A,A
- A
- A
- A
- A
- A
- A,C
- A
- A
- A
- A
- A
- A
- A,G
- A
- A,A
- A
- A,A
- A
- A
- A
- A
- A
- A
- A
- A,A
- A
- A,A
- A,A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A,A
- A,A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A,A
- A
- A,A
- A
- A
- A
- A
- A
- A
- A
- A
- A,A
- A,A
- A
- A
- A
- A,A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A,A,A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- A
- C
- C
- C
- C,C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C,C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C,C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- C
- G
- G,G,G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G,G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G,G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
- G
+ A
+ A
+ A
+ A
+ A
+ A,A
+ A
+ A
+ A
+ A
+ A
+ A,C
+ A
+ A
+ A
+ A
+ A
+ A
+ A,G
+ A
+ A
+ A
+ A,A
+ A
+ A
+ A
+ A
+ A,A
+ A
+ A
+ A,A
+ A
+ A,A
+ A,A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A,A
+ A,A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A,A
+ A,A
+ A,A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A,A
+ A,A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A,A,A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ A
+ C
+ C
+ C
+ C,C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C,C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C,C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ C
+ G
+ G,G,G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G,G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G,G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
+ G
\ No newline at end of file
diff --git a/test/output/hexbinOranges.svg b/test/output/hexbinOranges.svg
index d0792f3252..6961b3f2f4 100644
--- a/test/output/hexbinOranges.svg
+++ b/test/output/hexbinOranges.svg
@@ -71,194 +71,192 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/hexbinR.html b/test/output/hexbinR.html
index c203ea8d6a..58d0a90faa 100644
--- a/test/output/hexbinR.html
+++ b/test/output/hexbinR.html
@@ -132,173 +132,173 @@
-
-
+
+
-
-
+
+
-
-
+
+
- 9
- 8
- 8
- 8
- 6
- 6
- 6
- 5
- 5
- 5
- 5
- 4
- 4
- 4
- 3
- 3
- 3
- 3
- 3
- 3
- 3
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
+ 9
+ 9
+ 8
+ 7
+ 6
+ 6
+ 5
+ 5
+ 5
+ 5
+ 5
+ 4
+ 4
+ 4
+ 4
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
- 11
- 9
- 8
- 7
- 5
- 5
- 5
- 4
- 4
- 4
- 4
- 4
- 4
- 4
- 4
- 3
- 3
- 3
- 3
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
+ 11
+ 9
+ 8
+ 7
+ 5
+ 5
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 3
+ 3
+ 3
+ 3
+ 3
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
- 2
- 1
- 1
- 1
- 1
- 1
- 1
- 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
\ No newline at end of file
diff --git a/test/output/hexbinSymbol.html b/test/output/hexbinSymbol.html
index 0e0fe5f630..6cb07e96e5 100644
--- a/test/output/hexbinSymbol.html
+++ b/test/output/hexbinSymbol.html
@@ -128,226 +128,227 @@
culmen_depth_mm →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/hexbinText.svg b/test/output/hexbinText.svg
index 6d90b51ff8..af288e0b3c 100644
--- a/test/output/hexbinText.svg
+++ b/test/output/hexbinText.svg
@@ -98,289 +98,289 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
- 4
- 5
- 2
- 6
- 1
- 7
- 3
- 2
- 4
- 6
- 3
- 8
- 1
- 7
- 4
- 3
- 1
- 2
- 1
- 2
- 1
- 1
- 5
- 1
- 2
- 2
- 1
- 5
- 1
- 3
- 2
- 1
- 2
- 1
- 2
- 2
- 1
- 1
- 1
- 1
- 4
- 7
- 7
- 3
- 1
- 10
- 3
- 1
- 2
- 4
- 6
- 2
- 3
- 1
- 1
- 1
- 1
+ 4
+ 5
+ 2
+ 6
+ 1
+ 7
+ 3
+ 2
+ 4
+ 6
+ 3
+ 8
+ 1
+ 7
+ 4
+ 3
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 5
+ 1
+ 2
+ 2
+ 1
+ 5
+ 1
+ 3
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 4
+ 6
+ 7
+ 3
+ 1
+ 10
+ 3
+ 1
+ 2
+ 4
+ 7
+ 2
+ 3
+ 1
+ 1
+ 1
+ 1
- 16
- 1
- 5
- 2
- 1
- 3
- 1
- 3
- 3
- 1
- 1
- 1
- 1
- 5
- 3
- 7
- 4
- 2
- 1
- 3
- 1
- 2
- 1
- 1
- 1
- 3
- 6
- 7
- 4
- 4
- 1
- 1
- 1
- 3
- 1
- 1
- 2
- 1
- 1
- 1
- 6
- 6
- 2
- 4
- 3
- 7
- 8
- 7
- 2
- 1
- 1
- 1
- 1
- 1
- 1
- 2
- 2
- 1
- 2
- 1
- 1
- 1
+ 15
+ 1
+ 2
+ 2
+ 1
+ 3
+ 1
+ 3
+ 4
+ 1
+ 4
+ 3
+ 1
+ 4
+ 3
+ 8
+ 4
+ 1
+ 3
+ 1
+ 1
+ 2
+ 1
+ 1
+ 3
+ 5
+ 7
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 7
+ 6
+ 2
+ 4
+ 3
+ 7
+ 7
+ 7
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
- 1
- 1
- 2
- 1
- 1
- 1
- 1
- 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
\ No newline at end of file
diff --git a/test/output/hexbinZ.html b/test/output/hexbinZ.html
index e1d589f7de..4a210556c5 100644
--- a/test/output/hexbinZ.html
+++ b/test/output/hexbinZ.html
@@ -88,193 +88,194 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/hexbinZNull.svg b/test/output/hexbinZNull.svg
index f5ef0635dc..ebca9f2139 100644
--- a/test/output/hexbinZNull.svg
+++ b/test/output/hexbinZNull.svg
@@ -73,200 +73,198 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/penguinCulmenVoronoiExcludeHex.svg b/test/output/penguinCulmenVoronoiExcludeHex.svg
index 465be539b5..8c07f97977 100644
--- a/test/output/penguinCulmenVoronoiExcludeHex.svg
+++ b/test/output/penguinCulmenVoronoiExcludeHex.svg
@@ -102,209 +102,205 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
diff --git a/test/output/penguinDodgeHexbin.svg b/test/output/penguinDodgeHexbin.svg
index 6865e554cc..70ab5eea7a 100644
--- a/test/output/penguinDodgeHexbin.svg
+++ b/test/output/penguinDodgeHexbin.svg
@@ -435,351 +435,351 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/penguinHexbinColorExplicit.svg b/test/output/penguinHexbinColorExplicit.svg
index 0af1406d68..3a33da37ec 100644
--- a/test/output/penguinHexbinColorExplicit.svg
+++ b/test/output/penguinHexbinColorExplicit.svg
@@ -95,195 +95,197 @@
culmen_depth_mm →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/tipHexbin.svg b/test/output/tipHexbin.svg
index 00d6342c03..8fa9004762 100644
--- a/test/output/tipHexbin.svg
+++ b/test/output/tipHexbin.svg
@@ -62,245 +62,246 @@
weight →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/tipHexbinExplicit.svg b/test/output/tipHexbinExplicit.svg
index 17b8242105..a9e76f73ce 100644
--- a/test/output/tipHexbinExplicit.svg
+++ b/test/output/tipHexbinExplicit.svg
@@ -62,245 +62,246 @@
weight →
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/output/walmarts.html b/test/output/walmarts.html
index 6ef7797eef..4b953bbc15 100644
--- a/test/output/walmarts.html
+++ b/test/output/walmarts.html
@@ -51,655 +51,654 @@
- 1978-09-05
- 1992-06-02
- 1983-10-18
- 1983-10-04
- 1993-02-02
- 1989-04-03
- 1990-09-04
- 1977-07-01
- 1993-01-05
- 1970-11-01
- 1982-09-21
- 1986-03-04
- 1990-11-14
- 1992-04-01
- 1992-09-01
- 1992-09-01
- 1982-10-05
- 1991-07-02
- 1983-10-18
- 1989-02-02
- 1991-09-11
- 1992-08-04
- 1979-08-21
- 1981-09-29
- 1981-07-04
- 1989-08-31
- 1990-10-01
- 1991-09-11
- 1974-07-01
- 1992-08-04
- 1993-02-02
- 1983-03-01
- 1985-12-31
- 1988-08-16
- 1995-08-22
- 1975-07-01
- 1980-04-15
- 1985-10-22
- 1988-06-30
- 1989-10-31
- 1967-10-01
- 1974-10-01
- 1979-11-20
- 1987-05-12
- 1991-06-04
- 1994-01-04
- 1979-10-30
- 1980-08-12
- 1983-11-29
- 1981-07-04
- 1981-07-04
- 1981-07-04
- 1986-03-18
- 1987-05-12
- 1990-12-03
- 1990-05-30
- 1990-10-29
- 1991-11-05
- 1968-11-01
- 1971-11-01
- 1979-03-06
- 1980-09-30
- 1980-11-18
- 1981-07-04
- 1981-07-04
- 1984-02-01
- 1981-07-04
- 1985-07-16
- 1987-06-02
- 1988-06-30
- 1989-04-03
- 1989-10-31
- 1990-05-30
- 1990-06-27
- 1991-04-02
- 1991-11-05
- 1992-08-04
- 1994-10-18
- 1962-07-01
- 1969-04-01
- 1971-09-01
- 1983-08-02
- 1983-11-29
- 1984-08-21
- 1981-07-04
- 1990-01-31
- 1989-11-16
- 1990-10-29
- 1990-08-01
- 1991-11-05
- 1992-02-04
- 1972-11-01
- 1974-04-01
- 1975-02-01
- 1975-08-01
- 1979-07-10
- 1981-07-04
- 1983-05-17
- 1981-07-04
- 1981-07-04
- 1981-07-04
- 1984-10-16
- 1986-08-19
- 1988-03-01
- 1989-04-03
- 1989-12-30
- 1990-01-31
- 1991-01-30
- 1991-11-05
- 1991-06-04
- 1991-11-05
- 1992-02-04
- 1992-09-30
- 1993-03-02
- 1993-06-01
- 1970-11-01
- 1976-07-01
- 1979-10-30
- 1979-10-30
- 1981-07-04
- 1981-11-03
- 1981-07-04
- 1981-07-04
- 1981-07-04
- 1983-05-17
- 1984-10-16
- 1983-07-01
- 1985-11-12
- 1981-07-04
- 1984-10-23
- 1984-10-16
- 1985-06-04
- 1986-04-29
- 1986-08-19
- 1986-09-16
- 1987-03-31
- 1988-09-01
- 1988-11-17
- 1989-11-16
- 1990-01-31
- 1991-10-01
- 1991-10-01
- 1992-08-04
- 1992-09-30
- 1992-08-04
- 1993-03-02
- 1965-08-01
- 1967-10-01
- 1971-02-01
- 1971-08-01
- 1971-11-01
- 1972-07-01
- 1972-11-01
- 1974-08-01
- 1975-11-01
- 1978-03-14
- 1977-07-01
- 1977-07-01
- 1978-03-28
- 1978-05-16
- 1979-11-13
- 1980-07-29
- 1981-02-10
- 1980-10-14
- 1981-03-31
- 1982-10-05
- 1982-11-16
- 1982-11-16
- 1981-07-04
- 1984-08-02
- 1981-07-04
- 1983-05-17
- 1981-07-04
- 1981-07-04
- 1981-07-04
- 1985-02-05
- 1984-05-01
- 1986-06-10
- 1986-09-09
- 1986-11-18
- 1988-03-08
- 1989-08-01
- 1989-02-02
- 1989-04-03
- 1989-06-29
- 1989-11-16
- 1989-12-30
- 1991-01-30
- 1992-02-04
- 1991-11-05
- 1991-11-05
- 1992-08-04
- 1993-10-26
- 1993-10-19
- 1983-08-16
- 1968-03-01
- 1968-07-01
- 1969-04-01
- 1971-12-09
- 1972-02-01
- 1972-06-01
- 1974-07-01
- 1974-08-01
- 1976-04-01
- 1979-06-01
- 1979-02-13
- 1977-07-01
- 1979-03-27
- 1979-07-17
- 1979-06-26
- 1979-08-21
- 1980-02-26
- 1979-09-25
- 1981-02-10
- 1981-06-02
- 1980-11-18
- 1981-08-04
- 1982-05-18
- 1982-10-05
- 1983-07-01
- 1983-05-17
- 1981-07-04
- 1983-11-29
- 1981-07-04
- 1981-07-04
- 1985-08-30
- 1986-03-11
- 1988-03-08
- 1988-02-02
- 1989-06-01
- 1989-12-30
- 1990-12-03
- 1990-08-01
- 1991-01-30
- 1992-06-02
- 1991-11-05
- 1992-08-04
- 1992-03-03
- 1992-06-30
- 1992-09-30
- 1992-11-02
- 1993-02-02
- 1993-10-26
- 1993-11-02
- 1994-01-04
- 1994-07-26
- 1998-01-26
- 1964-08-01
- 1968-03-01
- 1972-10-01
- 1971-06-01
- 1972-10-01
- 1975-06-01
- 1975-02-01
- 1975-04-01
- 1975-11-01
- 1975-07-01
- 1976-06-01
- 1977-02-01
- 1977-02-01
- 1979-10-29
- 1979-11-27
- 1980-07-01
- 1980-11-11
- 1982-08-03
- 1982-04-20
- 1983-05-03
- 1983-06-07
- 1983-08-16
- 1984-03-06
- 1981-07-04
- 1985-01-22
- 1984-10-16
- 1985-07-02
- 1986-01-21
- 1985-07-02
- 1986-09-02
- 1985-08-20
- 1985-11-12
- 1985-10-29
- 1985-10-22
- 1986-02-04
- 1986-07-15
- 1986-09-16
- 1986-11-18
- 1987-09-01
- 1987-08-04
- 1988-06-02
- 1989-10-02
- 1989-09-16
- 1989-10-31
- 1989-08-01
- 1990-01-31
- 1991-01-30
- 1990-08-01
- 1991-01-30
- 1991-04-02
- 1991-01-30
- 1992-06-30
- 1993-01-05
- 1993-02-02
- 1993-02-02
- 1993-03-31
- 1993-06-01
- 1995-01-03
- 1995-01-03
- 1996-05-29
- 1997-01-29
- 1969-11-01
- 1970-10-01
- 1970-03-01
- 1971-02-01
- 1971-10-01
- 1971-11-01
- 1982-08-17
- 1974-08-01
- 1974-07-01
- 1975-06-01
- 1976-04-01
- 1976-10-01
- 1977-03-01
- 1977-03-01
- 1977-06-01
- 1977-04-01
- 1985-05-21
- 1979-08-07
- 1978-03-21
- 1979-05-15
- 1980-10-13
- 1981-12-01
- 1981-07-04
- 1982-08-31
- 1982-08-31
- 1984-03-06
- 1982-11-02
- 1985-05-14
- 1983-07-01
- 1983-10-04
- 1981-07-04
- 1983-10-04
- 1984-08-31
- 1981-07-04
- 1981-07-04
- 1984-10-02
- 1984-06-05
- 1984-04-03
- 1985-01-22
- 1985-07-16
- 1985-09-10
- 1985-10-08
- 1985-07-16
- 1985-12-31
- 1985-11-12
- 1986-06-17
- 1986-11-18
- 1987-03-03
- 1988-02-02
- 1988-08-16
- 1989-06-01
- 1989-02-02
- 1989-06-01
- 1989-08-31
- 1989-08-01
- 1989-12-30
- 1989-08-01
- 1989-11-16
- 1989-10-31
- 1991-10-01
- 1990-06-27
- 1990-10-29
- 1990-10-29
- 1991-01-30
- 1991-01-30
- 1991-06-04
- 1992-02-04
- 1992-06-02
- 1992-08-04
- 1992-08-04
- 1993-03-02
- 1992-11-02
- 1993-01-05
- 1993-04-30
- 1993-10-26
- 1993-10-26
- 1993-10-26
- 1993-07-27
- 1994-01-04
- 1994-08-31
- 1997-01-29
- 1995-05-31
- 1971-06-01
- 1972-05-01
- 1973-08-01
- 1974-09-01
- 1975-11-01
- 1976-02-01
- 1976-04-01
- 1976-09-01
- 1977-10-01
- 1977-11-01
- 1977-07-01
- 1978-09-12
- 1978-10-10
- 1980-11-18
- 1980-11-18
- 1984-10-30
- 1981-03-03
- 1981-07-28
- 1981-11-03
- 1982-05-31
- 1983-05-03
- 1982-09-21
- 1983-05-03
- 1983-06-07
- 1983-07-01
- 1984-08-31
- 1983-11-15
- 1984-10-02
- 1985-02-05
- 1981-07-04
- 1985-02-05
- 1981-07-04
- 1985-05-14
- 1984-11-13
- 1985-07-16
- 1985-04-30
- 1985-08-30
- 1985-06-04
- 1985-07-16
- 1985-10-16
- 1985-07-02
- 1985-09-17
- 1986-03-05
- 1987-03-03
- 1988-04-12
- 1989-02-02
- 1988-10-11
- 1989-02-02
- 1989-02-02
- 1989-08-01
- 1989-02-02
- 1989-06-01
- 1990-01-31
- 1990-04-02
- 1990-05-30
- 1990-08-01
- 1990-01-31
- 1990-04-30
- 1990-06-27
- 1990-12-31
- 1990-04-02
- 1990-10-29
- 1990-12-03
- 1990-12-31
- 1990-12-03
- 1991-04-30
- 1991-07-02
- 1991-01-30
- 1991-07-31
- 1991-04-02
- 1991-11-05
- 1991-11-05
- 1991-11-05
- 1992-09-01
- 1992-11-02
- 1992-11-02
- 1993-01-05
- 1992-09-30
- 1992-09-30
- 1993-01-05
- 1992-11-02
- 1993-04-30
- 1994-01-04
- 1994-01-04
- 1993-10-19
- 1993-10-26
- 1994-10-26
- 1995-03-21
- 1994-10-26
- 1995-06-28
- 1995-11-01
- 1995-12-30
- 1995-12-28
- 1997-06-18
- 2000-04-19
- 1976-08-01
- 1976-10-01
- 1977-11-01
- 1978-09-19
- 1981-03-10
- 1982-08-17
- 1984-04-03
- 1982-11-16
- 1982-08-17
- 1983-08-02
- 1983-10-16
- 1984-10-16
- 1984-07-17
- 1984-04-03
- 1984-08-02
- 1984-10-30
- 1981-07-04
- 1985-04-30
- 1985-07-16
- 1985-07-02
- 1985-07-02
- 1985-10-01
- 1986-03-04
- 1986-03-05
- 1986-03-05
- 1986-01-21
- 1986-03-04
- 1986-03-11
- 1986-06-03
- 1986-07-15
- 1986-03-18
- 1986-07-08
- 1986-03-05
- 1986-03-11
- 1986-09-16
- 1986-08-05
- 1987-02-03
- 1986-09-16
- 1986-09-09
- 1987-02-03
- 1987-04-28
- 1987-07-14
- 1988-03-01
- 1988-05-03
- 1988-11-01
- 1988-04-07
- 1988-05-03
- 1988-11-01
- 1988-10-03
- 1989-04-03
- 1989-05-02
- 1989-02-02
- 1989-06-01
- 1989-06-01
- 1989-10-31
- 1990-01-31
- 1989-12-30
- 1990-01-31
- 1990-04-02
- 1990-01-31
- 1990-01-31
- 1990-04-02
- 1990-08-01
- 1991-01-30
- 1990-08-01
- 1990-06-27
- 1990-08-01
- 1990-08-01
- 1991-01-30
- 1990-08-01
- 1990-10-29
- 1990-10-01
- 1990-12-03
- 1990-10-29
- 1990-10-29
- 1990-10-01
- 1990-12-31
- 1990-12-03
- 1990-11-14
- 1990-12-03
- 1991-01-30
- 1991-01-30
- 1991-01-30
- 1991-01-30
- 1991-11-05
- 1991-04-02
- 1991-04-02
- 1991-04-02
- 1991-07-02
- 1991-07-31
- 1991-12-31
- 1992-03-03
- 1992-03-03
- 1992-04-01
- 1992-09-30
- 1992-09-01
- 1992-11-02
- 1993-01-05
- 1992-11-02
- 1992-11-25
- 1993-01-05
- 1992-11-02
- 1992-11-02
- 1993-01-05
- 1993-02-02
- 1993-06-30
- 1993-02-02
- 1992-11-02
- 1993-03-31
- 1993-04-30
- 1993-03-31
- 1993-04-30
- 1993-08-31
- 1994-01-04
- 1993-06-01
- 1993-08-31
- 1993-10-26
- 1994-05-17
- 1994-03-30
- 1994-01-25
- 1995-01-03
- 1994-09-27
- 1994-03-22
- 1994-10-26
- 1994-03-30
- 1995-12-30
- 1995-01-03
- 1998-07-15
- 1997-01-29
- 1995-11-01
- 1998-08-19
- 1996-08-28
- 1996-06-26
- 1996-04-02
- 2001-01-24
- 1996-10-29
- 1998-06-17
- 1996-07-23
- 1996-10-29
- 1997-01-29
- 1998-01-26
- 1998-01-26
- 1998-01-26
- 1999-01-27
- 1998-10-14
- 1998-10-14
- 2000-08-16
- 2000-08-16
- 2000-01-26
- 2000-08-16
- 2000-06-14
- 2001-02-28
- 2002-02-20
- 2002-02-20
- 2004-01-21
- 2005-09-14
- 2004-05-19
- 2003-05-21
- 2003-08-20
- 2004-01-21
- 2004-01-21
- 2003-10-29
- 2004-10-27
- 2005-05-18
- 2005-01-26
+ 1978-09-05
+ 1992-06-02
+ 1983-10-18
+ 1993-02-02
+ 1983-10-04
+ 1989-04-03
+ 1977-07-01
+ 1992-09-01
+ 1981-09-01
+ 1990-09-04
+ 1993-01-05
+ 1986-03-04
+ 1992-04-01
+ 1992-09-01
+ 1970-11-01
+ 1990-11-14
+ 1982-09-21
+ 1991-07-02
+ 1983-10-18
+ 1991-09-11
+ 1989-02-02
+ 1992-08-04
+ 1981-09-29
+ 1981-07-04
+ 1992-08-04
+ 1991-09-11
+ 1974-07-01
+ 1979-08-21
+ 1983-03-01
+ 1988-08-16
+ 1993-06-01
+ 1985-12-31
+ 1989-10-31
+ 1990-10-01
+ 1995-08-22
+ 1975-07-01
+ 1980-04-15
+ 1988-03-01
+ 1989-08-31
+ 1967-10-01
+ 1968-11-01
+ 1974-10-01
+ 1979-11-20
+ 1986-01-21
+ 1991-06-04
+ 1994-01-04
+ 1979-10-30
+ 1980-08-12
+ 1983-11-29
+ 1981-07-04
+ 1981-07-04
+ 1981-07-04
+ 1985-10-22
+ 1987-05-12
+ 1987-05-12
+ 1990-05-30
+ 1990-10-29
+ 1990-10-29
+ 1991-11-05
+ 1980-09-30
+ 1980-11-18
+ 1983-11-29
+ 1984-02-01
+ 1981-07-04
+ 1985-07-16
+ 1987-06-02
+ 1988-06-30
+ 1989-10-31
+ 1990-01-31
+ 1990-12-03
+ 1989-11-16
+ 1990-05-30
+ 1990-06-27
+ 1991-04-02
+ 1991-11-05
+ 1991-11-05
+ 1992-08-04
+ 1994-10-18
+ 1962-07-01
+ 1969-04-01
+ 1971-09-01
+ 1974-04-01
+ 1975-02-01
+ 1979-03-06
+ 1983-08-02
+ 1981-07-04
+ 1981-07-04
+ 1984-08-21
+ 1981-07-04
+ 1989-04-03
+ 1989-04-03
+ 1990-08-01
+ 1991-11-05
+ 1992-02-04
+ 1992-02-04
+ 1993-06-01
+ 1971-05-01
+ 1975-08-01
+ 1979-09-25
+ 1981-07-04
+ 1981-11-03
+ 1983-05-17
+ 1981-07-04
+ 1981-07-04
+ 1984-10-16
+ 1984-10-16
+ 1986-01-21
+ 1986-08-19
+ 1988-03-01
+ 1989-08-01
+ 1990-01-31
+ 1991-01-30
+ 1991-11-05
+ 1991-06-04
+ 1970-11-01
+ 1972-11-01
+ 1972-11-01
+ 1975-11-01
+ 1976-07-01
+ 1979-10-30
+ 1979-10-30
+ 1980-07-29
+ 1981-02-10
+ 1981-03-31
+ 1981-07-04
+ 1981-07-04
+ 1981-07-04
+ 1981-07-04
+ 1981-07-04
+ 1984-10-16
+ 1983-07-01
+ 1985-11-12
+ 1981-07-04
+ 1984-10-23
+ 1981-07-04
+ 1985-06-04
+ 1986-04-29
+ 1986-08-19
+ 1986-11-18
+ 1987-03-31
+ 1988-09-01
+ 1989-02-02
+ 1989-11-16
+ 1990-10-29
+ 1991-10-01
+ 1991-10-01
+ 1992-09-30
+ 1992-08-04
+ 1993-03-02
+ 1992-09-30
+ 1983-08-16
+ 1965-08-01
+ 1967-10-01
+ 1968-07-01
+ 1971-02-01
+ 1971-11-01
+ 1972-07-01
+ 1974-07-01
+ 1974-08-01
+ 1978-03-14
+ 1978-03-28
+ 1978-05-16
+ 1978-06-13
+ 1979-11-13
+ 1979-09-25
+ 1980-10-14
+ 1982-10-05
+ 1981-07-04
+ 1982-11-16
+ 1982-11-16
+ 1981-07-04
+ 1984-08-02
+ 1983-05-17
+ 1983-05-17
+ 1981-07-04
+ 1981-07-04
+ 1985-02-05
+ 1984-05-01
+ 1986-06-10
+ 1986-09-09
+ 1988-03-08
+ 1988-11-17
+ 1989-04-03
+ 1989-06-29
+ 1989-12-30
+ 1990-01-31
+ 1991-01-30
+ 1992-02-04
+ 1991-11-05
+ 1991-11-05
+ 1993-03-02
+ 1994-03-30
+ 1968-03-01
+ 1969-04-01
+ 1969-11-01
+ 1971-08-01
+ 1971-12-09
+ 1972-06-01
+ 1974-08-01
+ 1976-04-01
+ 1979-06-01
+ 1979-02-13
+ 1977-07-01
+ 1977-07-01
+ 1977-07-01
+ 1979-07-17
+ 1979-06-26
+ 1980-02-26
+ 1979-11-27
+ 1981-02-10
+ 1980-11-18
+ 1981-08-04
+ 1982-05-18
+ 1982-10-05
+ 1983-07-01
+ 1983-05-17
+ 1983-11-29
+ 1981-07-04
+ 1981-07-04
+ 1985-08-30
+ 1986-03-11
+ 1988-03-08
+ 1988-02-02
+ 1989-06-01
+ 1989-08-31
+ 1989-10-31
+ 1989-12-30
+ 1990-06-27
+ 1990-12-03
+ 1991-01-30
+ 1991-04-02
+ 1992-06-02
+ 1991-11-05
+ 1992-08-04
+ 1992-03-03
+ 1992-06-30
+ 1992-08-04
+ 1992-09-30
+ 1992-11-02
+ 1993-02-02
+ 1993-10-26
+ 1994-01-04
+ 1994-07-26
+ 1998-01-26
+ 1997-01-29
+ 1972-10-01
+ 1970-03-01
+ 1971-06-01
+ 1972-10-01
+ 1974-02-01
+ 1975-06-01
+ 1975-02-01
+ 1975-11-01
+ 1975-07-01
+ 1977-02-01
+ 1977-02-01
+ 1979-10-29
+ 1979-08-21
+ 1980-07-01
+ 1980-11-11
+ 1982-08-03
+ 1981-06-02
+ 1982-04-20
+ 1982-11-02
+ 1983-05-03
+ 1981-07-04
+ 1981-07-04
+ 1983-06-07
+ 1981-07-04
+ 1984-03-06
+ 1981-07-04
+ 1985-01-22
+ 1984-10-16
+ 1985-07-02
+ 1986-01-21
+ 1985-07-02
+ 1986-09-02
+ 1985-11-12
+ 1985-10-29
+ 1985-10-22
+ 1986-02-04
+ 1986-07-15
+ 1986-09-16
+ 1986-11-18
+ 1987-09-01
+ 1987-08-04
+ 1988-06-02
+ 1989-10-02
+ 1989-09-16
+ 1989-08-01
+ 1990-01-31
+ 1989-12-30
+ 1990-10-29
+ 1991-01-30
+ 1990-08-01
+ 1990-08-01
+ 1991-01-30
+ 1991-04-02
+ 1991-01-30
+ 1992-02-04
+ 1992-06-30
+ 1993-01-05
+ 1993-02-02
+ 1993-02-02
+ 1993-03-31
+ 1993-06-01
+ 1993-10-26
+ 1993-11-02
+ 1995-01-03
+ 1995-01-03
+ 1996-05-29
+ 1964-08-01
+ 1968-03-01
+ 1970-10-01
+ 1971-02-01
+ 1971-10-01
+ 1971-11-01
+ 1982-08-17
+ 1974-08-01
+ 1974-07-01
+ 1975-04-01
+ 1975-06-01
+ 1976-06-01
+ 1976-10-01
+ 1977-03-01
+ 1977-03-01
+ 1977-06-01
+ 1977-04-01
+ 1977-10-01
+ 1985-05-21
+ 1979-08-07
+ 1978-09-12
+ 1979-05-15
+ 1980-10-13
+ 1981-12-01
+ 1981-07-04
+ 1982-08-31
+ 1982-08-31
+ 1984-03-06
+ 1985-05-14
+ 1983-08-16
+ 1983-07-01
+ 1981-07-04
+ 1983-10-04
+ 1981-07-04
+ 1983-10-04
+ 1984-10-02
+ 1984-06-05
+ 1984-04-03
+ 1985-01-22
+ 1985-07-16
+ 1985-09-10
+ 1985-10-08
+ 1985-07-16
+ 1985-12-31
+ 1985-08-20
+ 1985-11-12
+ 1986-06-17
+ 1986-11-18
+ 1987-03-03
+ 1988-08-16
+ 1989-06-01
+ 1989-06-01
+ 1989-08-01
+ 1989-12-30
+ 1989-08-01
+ 1989-11-16
+ 1991-10-01
+ 1991-01-30
+ 1990-10-29
+ 1991-01-30
+ 1991-01-30
+ 1991-06-04
+ 1991-01-30
+ 1992-06-02
+ 1992-08-04
+ 1992-08-04
+ 1993-03-02
+ 1992-11-02
+ 1993-01-05
+ 1993-04-30
+ 1993-10-26
+ 1993-10-26
+ 1993-10-26
+ 1993-07-27
+ 1994-01-04
+ 1995-01-25
+ 1997-01-29
+ 1995-05-31
+ 1971-06-01
+ 1972-05-01
+ 1973-08-01
+ 1974-09-01
+ 1975-11-01
+ 1976-02-01
+ 1976-04-01
+ 1976-04-01
+ 1976-09-01
+ 1976-10-01
+ 1977-11-01
+ 1977-07-01
+ 1978-03-21
+ 1980-11-18
+ 1980-11-18
+ 1981-03-03
+ 1981-07-28
+ 1982-05-31
+ 1983-05-03
+ 1982-09-21
+ 1983-05-03
+ 1983-06-07
+ 1984-08-31
+ 1983-11-15
+ 1984-08-31
+ 1984-10-02
+ 1985-02-05
+ 1985-02-05
+ 1981-07-04
+ 1984-11-13
+ 1985-07-16
+ 1985-04-30
+ 1985-08-30
+ 1985-06-04
+ 1985-07-16
+ 1985-07-02
+ 1985-09-17
+ 1986-03-04
+ 1986-03-05
+ 1988-02-02
+ 1988-04-12
+ 1988-11-01
+ 1988-04-07
+ 1989-02-02
+ 1988-10-11
+ 1989-02-02
+ 1989-02-02
+ 1989-08-01
+ 1989-02-02
+ 1989-06-01
+ 1989-10-31
+ 1990-01-31
+ 1991-11-04
+ 1990-04-02
+ 1990-05-30
+ 1990-08-01
+ 1990-01-31
+ 1990-04-30
+ 1990-06-27
+ 1990-12-31
+ 1990-04-02
+ 1990-10-29
+ 1990-12-03
+ 1990-12-31
+ 1990-12-03
+ 1991-04-30
+ 1991-07-02
+ 1991-07-31
+ 1991-04-02
+ 1991-11-05
+ 1991-11-05
+ 1991-11-05
+ 1992-09-01
+ 1992-11-02
+ 1992-11-02
+ 1993-01-05
+ 1992-09-30
+ 1992-09-30
+ 1993-01-05
+ 1992-11-02
+ 1993-04-30
+ 1994-01-04
+ 1994-01-04
+ 1993-10-19
+ 1993-10-26
+ 1994-10-26
+ 1994-10-26
+ 1995-06-28
+ 1995-11-01
+ 1995-12-30
+ 1995-12-30
+ 1995-12-28
+ 1997-06-18
+ 2000-04-19
+ 1976-08-01
+ 1978-10-10
+ 1978-09-19
+ 1981-03-10
+ 1981-11-03
+ 1982-08-17
+ 1984-04-03
+ 1982-11-16
+ 1982-08-17
+ 1983-08-02
+ 1983-10-16
+ 1984-10-16
+ 1984-10-16
+ 1984-07-17
+ 1984-04-03
+ 1984-08-02
+ 1984-10-30
+ 1981-07-04
+ 1985-05-14
+ 1985-04-30
+ 1985-04-30
+ 1985-07-16
+ 1985-07-02
+ 1985-10-16
+ 1985-07-02
+ 1985-10-01
+ 1986-03-04
+ 1986-03-05
+ 1986-03-05
+ 1986-01-21
+ 1986-03-11
+ 1986-06-03
+ 1986-07-15
+ 1986-03-18
+ 1986-07-08
+ 1986-03-05
+ 1986-03-11
+ 1986-09-16
+ 1986-08-05
+ 1987-02-03
+ 1986-09-16
+ 1986-09-09
+ 1987-02-03
+ 1987-04-28
+ 1987-07-14
+ 1988-03-01
+ 1988-05-03
+ 1988-05-03
+ 1988-11-01
+ 1988-10-03
+ 1989-04-03
+ 1989-05-02
+ 1989-02-02
+ 1989-06-01
+ 1989-06-01
+ 1989-10-31
+ 1990-01-31
+ 1989-11-16
+ 1989-12-30
+ 1990-01-31
+ 1990-04-02
+ 1990-01-31
+ 1990-01-31
+ 1990-04-02
+ 1990-08-01
+ 1991-01-30
+ 1990-08-01
+ 1990-06-27
+ 1990-08-01
+ 1991-11-05
+ 1990-08-01
+ 1991-01-30
+ 1990-08-01
+ 1990-10-29
+ 1990-10-01
+ 1990-12-03
+ 1990-10-29
+ 1990-10-01
+ 1990-12-31
+ 1990-12-03
+ 1990-11-14
+ 1990-12-03
+ 1991-01-30
+ 1991-01-30
+ 1991-01-30
+ 1991-01-30
+ 1991-11-05
+ 1991-04-02
+ 1991-04-02
+ 1991-04-02
+ 1991-07-02
+ 1991-07-31
+ 1991-12-31
+ 1992-03-03
+ 1992-03-03
+ 1992-04-01
+ 1992-09-01
+ 1992-11-02
+ 1993-01-05
+ 1992-11-02
+ 1992-11-25
+ 1993-01-05
+ 1992-11-02
+ 1992-11-02
+ 1993-01-05
+ 1993-02-02
+ 1993-06-30
+ 1993-02-02
+ 1992-11-02
+ 1993-03-31
+ 1993-04-30
+ 1993-03-31
+ 1993-04-30
+ 1993-08-31
+ 1993-06-01
+ 1993-08-31
+ 1993-10-26
+ 1994-05-17
+ 1994-03-30
+ 1994-01-25
+ 1995-01-03
+ 1994-09-27
+ 1994-08-31
+ 1994-03-22
+ 1994-10-26
+ 1994-03-30
+ 1995-12-30
+ 1995-01-03
+ 1998-07-15
+ 1997-01-29
+ 1995-11-01
+ 1998-08-19
+ 1996-08-28
+ 1996-06-26
+ 1996-04-02
+ 2001-01-24
+ 1996-10-29
+ 1998-06-17
+ 1996-07-23
+ 1996-10-29
+ 1997-01-29
+ 1998-01-26
+ 1998-01-26
+ 1998-01-26
+ 1998-07-15
+ 1998-10-14
+ 1998-10-14
+ 2000-08-16
+ 2000-01-26
+ 2000-08-16
+ 2000-06-14
+ 2001-02-28
+ 2002-02-20
+ 2002-02-20
+ 2003-03-19
+ 2004-01-21
+ 2005-09-14
+ 2004-05-19
+ 2003-05-21
+ 2003-08-20
+ 2004-01-21
+ 2004-01-21
+ 2003-10-29
+ 2004-10-27
+ 2005-05-18
+ 2005-01-26
\ No newline at end of file
diff --git a/test/plots/hexbin-edge.ts b/test/plots/hexbin-edge.ts
new file mode 100644
index 0000000000..5938d4b84a
--- /dev/null
+++ b/test/plots/hexbin-edge.ts
@@ -0,0 +1,35 @@
+import * as Plot from "@observablehq/plot";
+
+// Regression test: when a data value lands exactly on a hexbin grid boundary
+// (a half-integer in bin-index space), the rounding must go toward the interior
+// of the plot rather than creating a floating bin outside the frame. With
+// width=630, margin=0, inset=20, binWidth=20, the right edge is at pixel 610.
+// 610/20 = 30.5 — a tie. Math.round(30.5) = 31, which would place the bin at
+// 620, outside the frame. The center-directed rounding breaks this tie toward
+// the interior (30), placing the bin at 600 instead. Similarly, on the left
+// edge at pixel 20, odd-row bins land at 0.5 and round up (toward center) to
+// 1, keeping them at 30 instead of floating outside at 10.
+export async function hexbinEdge() {
+ const w = 630,
+ h = 400,
+ n = 190;
+ const nh = Math.round((n * h) / (w + h));
+ const nw = n - nh;
+ const data = [
+ ...Array.from({length: nw}, (_, i) => [i / (nw - 1), 0]),
+ ...Array.from({ length: nw }, (_, i) => [i / (nw - 1), 1]),
+ ...Array.from({length: nh}, (_, i) => [0, i / (nh - 1)]),
+ ...Array.from({length: nh}, (_, i) => [1, i / (nh - 1)])
+ ];
+ return Plot.plot({
+ width: w,
+ height: h,
+ margin: 0,
+ axis: null,
+ inset: 20,
+ marks: [
+ Plot.dot(data, Plot.hexbin({}, {binWidth: 20, stroke: "currentColor"})),
+ Plot.dot(data, {r: 1, fill: "red"})
+ ]
+ });
+}
diff --git a/test/plots/index.ts b/test/plots/index.ts
index f54398dca7..8181dbe760 100644
--- a/test/plots/index.ts
+++ b/test/plots/index.ts
@@ -126,6 +126,7 @@ export * from "./hexbin-text.js";
export * from "./hexbin-z-null.js";
export * from "./hexbin-z.js";
export * from "./hexbin.js";
+export * from "./hexbin-edge.js";
export * from "./high-cardinality-ordinal.js";
export * from "./href-fill.js";
export * from "./ibm-trading.js";