From d8f1084333adb2d1b2c2ca0444682626155dd4cb Mon Sep 17 00:00:00 2001 From: MiniPear Date: Fri, 12 May 2023 18:02:44 +0800 Subject: [PATCH] fix(scale): zero domain min and max (#5014) --- .../static/basicIntervalZeroDomainMin.png | Bin 0 -> 12675 bytes .../static/basic-interval-zero-domain-min.ts | 21 ++++++++++++++++++ __tests__/plots/static/index.ts | 1 + src/runtime/scale.ts | 4 ++-- 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 __tests__/integration/snapshots/static/basicIntervalZeroDomainMin.png create mode 100644 __tests__/plots/static/basic-interval-zero-domain-min.ts diff --git a/__tests__/integration/snapshots/static/basicIntervalZeroDomainMin.png b/__tests__/integration/snapshots/static/basicIntervalZeroDomainMin.png new file mode 100644 index 0000000000000000000000000000000000000000..9ace1d700e83f32e0ef12131db024aefa6566264 GIT binary patch literal 12675 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 U)i?zIR|TN0p|4(e&i2;-0Mv^e0{{R3 literal 0 HcmV?d00001 diff --git a/__tests__/plots/static/basic-interval-zero-domain-min.ts b/__tests__/plots/static/basic-interval-zero-domain-min.ts new file mode 100644 index 0000000000..e27ab40819 --- /dev/null +++ b/__tests__/plots/static/basic-interval-zero-domain-min.ts @@ -0,0 +1,21 @@ +import { G2Spec } from '../../../src'; + +export async function basicIntervalZeroDomainMin(): Promise { + return { + type: 'interval', + data: [ + { name: 'MODIFY', value: 138, washaway: 0.21014492753623193 }, + { name: 'PRERELEASE', value: 109, washaway: 0.5596330275229358 }, + { name: 'RELEASING', value: 48, washaway: 0 }, + { name: 'XXX', value: -48, washaway: 0 }, + ], + encode: { + x: 'name', + y: 'value', + color: 'name', + }, + scale: { + y: { domainMin: 0 }, + }, + }; +} diff --git a/__tests__/plots/static/index.ts b/__tests__/plots/static/index.ts index 3fca69f1ae..e6ac9f629d 100644 --- a/__tests__/plots/static/index.ts +++ b/__tests__/plots/static/index.ts @@ -202,3 +202,4 @@ export { mockPointLogTicks } from './mock-point-log-ticks'; export { alphabetIntervalLabelRotate } from './alphabet-interval-label-rotate'; export { aaplLineBasicTranspose } from './aapl-line-basic-transpose'; export { alphabetIntervalSortXDomain } from './alphabet-interval-sort-x-domain'; +export { basicIntervalZeroDomainMin } from './basic-interval-zero-domain-min'; diff --git a/src/runtime/scale.ts b/src/runtime/scale.ts index 2d3e67af36..8a4a24d4f7 100644 --- a/src/runtime/scale.ts +++ b/src/runtime/scale.ts @@ -200,7 +200,7 @@ function inferScaleDomain( case 'quantize': case 'threshold': { const [d0, d1] = inferDomainQ(values, options); - return [domainMin || d0, domainMax || d1]; + return [domainMin ?? d0, domainMax ?? d1]; } case 'band': case 'ordinal': @@ -210,7 +210,7 @@ function inferScaleDomain( return inferDomainO(values); case 'sequential': { const [d0, d1] = inferDomainS(values); - return [domainMin || d0, domainMax || d1]; + return [domainMin ?? d0, domainMax ?? d1]; } default: return [];