From d4b27bba1439dccab3dbf54f7c1af64155d8c7d5 Mon Sep 17 00:00:00 2001 From: Kanit Wongsuphasawat Date: Fri, 29 Sep 2023 16:26:47 -0700 Subject: [PATCH] fix: correct the formula for interpolating between bin start and end (interpolatedSignalRef) (#9111) Co-authored-by: GitHub Actions Bot --- examples/compiled/bar_month_band.png | Bin 10099 -> 10116 bytes examples/compiled/bar_month_band.svg | 2 +- examples/compiled/bar_month_band.vg.json | 4 +-- examples/compiled/bar_month_band_config.png | Bin 10099 -> 10116 bytes examples/compiled/bar_month_band_config.svg | 2 +- .../compiled/bar_month_band_config.vg.json | 4 +-- src/compile/data/timeunit.ts | 24 +++++++++--------- src/compile/mark/encode/position-rect.ts | 18 +++++++------ src/compile/mark/encode/valueref.ts | 4 +-- test/compile/mark/point.test.ts | 2 +- 10 files changed, 31 insertions(+), 29 deletions(-) diff --git a/examples/compiled/bar_month_band.png b/examples/compiled/bar_month_band.png index 32f54ec042b5c159fc88293f794a5fc62e27e76d..c1210128889655746d8e02e6ca0625d0139f8532 100644 GIT binary patch literal 10116 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 diff --git a/examples/compiled/bar_month_band.svg b/examples/compiled/bar_month_band.svg index 2887e69c26..552e1e0336 100644 --- a/examples/compiled/bar_month_band.svg +++ b/examples/compiled/bar_month_band.svg @@ -1 +1 @@ -JanFebMarAprMayJunJulAugSepOctNovDecJandate (month)012345Mean of precipitation \ No newline at end of file +JanFebMarAprMayJunJulAugSepOctNovDecJandate (month)012345Mean of precipitation \ No newline at end of file diff --git a/examples/compiled/bar_month_band.vg.json b/examples/compiled/bar_month_band.vg.json index e215d64cde..9165a52a80 100644 --- a/examples/compiled/bar_month_band.vg.json +++ b/examples/compiled/bar_month_band.vg.json @@ -45,13 +45,13 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x2": { - "signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])", + "signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])", "offset": { "signal": "0.5 + (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])))) : 0.5)" } }, "x": { - "signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])", + "signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])", "offset": { "signal": "0.5 + (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])))) : -0.5)" } diff --git a/examples/compiled/bar_month_band_config.png b/examples/compiled/bar_month_band_config.png index 32f54ec042b5c159fc88293f794a5fc62e27e76d..c1210128889655746d8e02e6ca0625d0139f8532 100644 GIT binary patch literal 10116 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 diff --git a/examples/compiled/bar_month_band_config.svg b/examples/compiled/bar_month_band_config.svg index 2887e69c26..552e1e0336 100644 --- a/examples/compiled/bar_month_band_config.svg +++ b/examples/compiled/bar_month_band_config.svg @@ -1 +1 @@ -JanFebMarAprMayJunJulAugSepOctNovDecJandate (month)012345Mean of precipitation \ No newline at end of file +JanFebMarAprMayJunJulAugSepOctNovDecJandate (month)012345Mean of precipitation \ No newline at end of file diff --git a/examples/compiled/bar_month_band_config.vg.json b/examples/compiled/bar_month_band_config.vg.json index e215d64cde..9165a52a80 100644 --- a/examples/compiled/bar_month_band_config.vg.json +++ b/examples/compiled/bar_month_band_config.vg.json @@ -45,13 +45,13 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x2": { - "signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])", + "signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])", "offset": { "signal": "0.5 + (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])))) : 0.5)" } }, "x": { - "signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])", + "signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])", "offset": { "signal": "0.5 + (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"month_date_end\"]) - scale(\"x\", datum[\"month_date\"])))) : -0.5)" } diff --git a/src/compile/data/timeunit.ts b/src/compile/data/timeunit.ts index 99a1602f77..b8307b47a4 100644 --- a/src/compile/data/timeunit.ts +++ b/src/compile/data/timeunit.ts @@ -32,12 +32,12 @@ function offsetAs(field: FieldName) { export class TimeUnitNode extends DataFlowNode { public clone() { - return new TimeUnitNode(null, duplicate(this.formula)); + return new TimeUnitNode(null, duplicate(this.timeUnits)); } constructor( parent: DataFlowNode, - private formula: Dict + private timeUnits: Dict ) { super(parent); } @@ -101,13 +101,13 @@ export class TimeUnitNode extends DataFlowNode { * and removing `other`. */ public merge(other: TimeUnitNode) { - this.formula = {...this.formula}; + this.timeUnits = {...this.timeUnits}; // if the same hash happen twice, merge - for (const key in other.formula) { - if (!this.formula[key]) { + for (const key in other.timeUnits) { + if (!this.timeUnits[key]) { // copy if it's not a duplicate - this.formula[key] = other.formula[key]; + this.timeUnits[key] = other.timeUnits[key]; } } @@ -125,7 +125,7 @@ export class TimeUnitNode extends DataFlowNode { public removeFormulas(fields: Set) { const newFormula = {}; - for (const [key, timeUnitComponent] of entries(this.formula)) { + for (const [key, timeUnitComponent] of entries(this.timeUnits)) { const fieldAs = isTimeUnitTransformComponent(timeUnitComponent) ? timeUnitComponent.as : `${timeUnitComponent.field}_end`; @@ -134,29 +134,29 @@ export class TimeUnitNode extends DataFlowNode { } } - this.formula = newFormula; + this.timeUnits = newFormula; } public producedFields() { return new Set( - vals(this.formula).map(f => { + vals(this.timeUnits).map(f => { return isTimeUnitTransformComponent(f) ? f.as : offsetAs(f.field); }) ); } public dependentFields() { - return new Set(vals(this.formula).map(f => f.field)); + return new Set(vals(this.timeUnits).map(f => f.field)); } public hash() { - return `TimeUnit ${hash(this.formula)}`; + return `TimeUnit ${hash(this.timeUnits)}`; } public assemble() { const transforms: (VgTimeUnitTransform | VgFormulaTransform)[] = []; - for (const f of vals(this.formula)) { + for (const f of vals(this.timeUnits)) { if (isTimeUnitTransformComponent(f)) { const {field, as, timeUnit} = f; const {unit, utc, ...params} = normalizeTimeUnit(timeUnit); diff --git a/src/compile/mark/encode/position-rect.ts b/src/compile/mark/encode/position-rect.ts index c6908012f7..c2da226aff 100644 --- a/src/compile/mark/encode/position-rect.ts +++ b/src/compile/mark/encode/position-rect.ts @@ -242,7 +242,7 @@ function getBinSpacing( channel: PositionChannel | PolarPositionChannel, spacing: number, reverse: boolean | SignalRef, - translate: number | SignalRef, + axisTranslate: number | SignalRef, offset: number | VgValueRef, minBandSize: number | SignalRef, bandSizeExpr: string @@ -255,10 +255,10 @@ function getBinSpacing( const spacingOffset = isEnd ? -spacing / 2 : spacing / 2; - if (isSignalRef(reverse) || isSignalRef(offset) || isSignalRef(translate) || minBandSize) { + if (isSignalRef(reverse) || isSignalRef(offset) || isSignalRef(axisTranslate) || minBandSize) { const reverseExpr = signalOrStringValue(reverse); const offsetExpr = signalOrStringValue(offset); - const translateExpr = signalOrStringValue(translate); + const axisTranslateExpr = signalOrStringValue(axisTranslate); const minBandSizeExpr = signalOrStringValue(minBandSize); const sign = isEnd ? '' : '-'; @@ -267,7 +267,7 @@ function getBinSpacing( ? `(${bandSizeExpr} < ${minBandSizeExpr} ? ${sign}0.5 * (${minBandSizeExpr} - (${bandSizeExpr})) : ${spacingOffset})` : spacingOffset; - const t = translateExpr ? `${translateExpr} + ` : ''; + const t = axisTranslateExpr ? `${axisTranslateExpr} + ` : ''; const r = reverseExpr ? `(${reverseExpr} ? -1 : 1) * ` : ''; const o = offsetExpr ? `(${offsetExpr} + ${spacingAndSizeOffset})` : spacingAndSizeOffset; @@ -276,7 +276,7 @@ function getBinSpacing( }; } else { offset = offset || 0; - return translate + (reverse ? -offset - spacingOffset : +offset + spacingOffset); + return axisTranslate + (reverse ? -offset - spacingOffset : +offset + spacingOffset); } } @@ -325,7 +325,7 @@ function rectBinPosition({ bandSizeExpr ); - const bandPosition = isSignalRef(bandSize) + const bandPositionForBandSize = isSignalRef(bandSize) ? {signal: `(1-${bandSize.signal})/2`} : isRelativeBandSize(bandSize) ? (1 - bandSize.band) / 2 @@ -336,13 +336,15 @@ function rectBinPosition({ [vgChannel2]: rectBinRef({ fieldDef, scaleName, - bandPosition, + bandPosition: bandPositionForBandSize, offset: binSpacingOffset2 }), [vgChannel]: rectBinRef({ fieldDef, scaleName, - bandPosition: isSignalRef(bandPosition) ? {signal: `1-${bandPosition.signal}`} : 1 - bandPosition, + bandPosition: isSignalRef(bandPositionForBandSize) + ? {signal: `1-${bandPositionForBandSize.signal}`} + : 1 - bandPositionForBandSize, offset: binSpacingOffset }) }; diff --git a/src/compile/mark/encode/valueref.ts b/src/compile/mark/encode/valueref.ts index 4e203451fb..2c427f54af 100644 --- a/src/compile/mark/encode/valueref.ts +++ b/src/compile/mark/encode/valueref.ts @@ -191,8 +191,8 @@ export function interpolatedSignalRef({ ref.field = field; } else { const datum = isSignalRef(bandPosition) - ? `${bandPosition.signal} * ${start} + (1-${bandPosition.signal}) * ${end}` - : `${bandPosition} * ${start} + ${1 - bandPosition} * ${end}`; + ? `(1-${bandPosition.signal}) * ${start} + ${bandPosition.signal} * ${end}` + : `${1 - bandPosition} * ${start} + ${bandPosition} * ${end}`; ref.signal = `scale("${scaleName}", ${datum})`; } diff --git a/test/compile/mark/point.test.ts b/test/compile/mark/point.test.ts index 6066e8bd1e..ba91472b95 100644 --- a/test/compile/mark/point.test.ts +++ b/test/compile/mark/point.test.ts @@ -121,7 +121,7 @@ describe('Mark: Point', () => { const props = point.encodeEntry(model); expect(props.x).toEqual({ - signal: 'scale("x", 0.6 * datum["bin_maxbins_10_a"] + 0.4 * datum["bin_maxbins_10_a_end"])' + signal: 'scale("x", 0.4 * datum["bin_maxbins_10_a"] + 0.6 * datum["bin_maxbins_10_a_end"])' }); }); it('interpolates x timeUnit with timeUnitBand = 0.5', () => {