From 895a853231ed79fe27d1dc7bc551ab7ede50280c Mon Sep 17 00:00:00 2001 From: Kanit Wongsuphasawat Date: Thu, 27 Apr 2023 16:22:06 -0700 Subject: [PATCH 1/5] doc(examples): add problematic example --- examples/specs/bar_q_qpow.vl.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 examples/specs/bar_q_qpow.vl.json diff --git a/examples/specs/bar_q_qpow.vl.json b/examples/specs/bar_q_qpow.vl.json new file mode 100644 index 0000000000..a246a6bd58 --- /dev/null +++ b/examples/specs/bar_q_qpow.vl.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "data": { + "values": [ + {"a": 3000, "b": 55}, + {"a": 3500, "b": 28}, + {"a": 4000, "b": 55} + ] + }, + "mark": "bar", + "encoding": { + "x": {"field": "a", "type": "quantitative"}, + "y": {"field": "b", "type": "quantitative", "scale": {"type": "pow"}} + } +} From 50088fd147d4f83df10349144aae81baafeaa6a0 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Apr 2023 23:27:40 +0000 Subject: [PATCH 2/5] chore: update examples [CI] --- examples/compiled/bar_q_qpow.png | Bin 0 -> 6751 bytes examples/compiled/bar_q_qpow.svg | 1 + examples/compiled/bar_q_qpow.vg.json | 125 +++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 examples/compiled/bar_q_qpow.png create mode 100644 examples/compiled/bar_q_qpow.svg create mode 100644 examples/compiled/bar_q_qpow.vg.json diff --git a/examples/compiled/bar_q_qpow.png b/examples/compiled/bar_q_qpow.png new file mode 100644 index 0000000000000000000000000000000000000000..2653d4979112aca32cd57037882e9035f0aafa2f GIT binary patch literal 6751 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 literal 0 HcmV?d00001 diff --git a/examples/compiled/bar_q_qpow.svg b/examples/compiled/bar_q_qpow.svg new file mode 100644 index 0000000000..452928830a --- /dev/null +++ b/examples/compiled/bar_q_qpow.svg @@ -0,0 +1 @@ +02,0004,0006,0008,000a01020304050b \ No newline at end of file diff --git a/examples/compiled/bar_q_qpow.vg.json b/examples/compiled/bar_q_qpow.vg.json new file mode 100644 index 0000000000..fe162ad6e8 --- /dev/null +++ b/examples/compiled/bar_q_qpow.vg.json @@ -0,0 +1,125 @@ +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "background": "white", + "padding": 5, + "width": 200, + "height": 200, + "style": "cell", + "data": [ + { + "name": "source_0", + "values": [ + {"a": 3000, "b": 55}, + {"a": 3500, "b": 28}, + {"a": 4000, "b": 55} + ] + }, + { + "name": "data_0", + "source": "source_0", + "transform": [ + { + "type": "stack", + "groupby": ["b"], + "field": "a", + "sort": {"field": [], "order": []}, + "as": ["a_start", "a_end"], + "offset": "zero" + }, + { + "type": "filter", + "expr": "isValid(datum[\"a\"]) && isFinite(+datum[\"a\"]) && isValid(datum[\"b\"]) && isFinite(+datum[\"b\"])" + } + ] + } + ], + "marks": [ + { + "name": "marks", + "type": "rect", + "style": ["bar"], + "from": {"data": "data_0"}, + "encode": { + "update": { + "fill": {"value": "#4c78a8"}, + "ariaRoleDescription": {"value": "bar"}, + "description": { + "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))" + }, + "xc": {"scale": "x", "field": "a"}, + "width": {"value": 5}, + "y": {"scale": "y", "field": "b"}, + "y2": {"scale": "y", "value": 0} + } + } + } + ], + "scales": [ + { + "name": "x", + "type": "linear", + "domain": {"data": "data_0", "fields": ["a_start", "a_end"]}, + "range": [0, {"signal": "width"}], + "nice": true, + "zero": false, + "padding": 5 + }, + { + "name": "y", + "type": "pow", + "domain": {"data": "data_0", "field": "b"}, + "range": [{"signal": "height"}, 0], + "nice": true, + "zero": true + } + ], + "axes": [ + { + "scale": "x", + "orient": "bottom", + "gridScale": "y", + "grid": true, + "tickCount": {"signal": "ceil(width/40)"}, + "domain": false, + "labels": false, + "aria": false, + "maxExtent": 0, + "minExtent": 0, + "ticks": false, + "zindex": 0 + }, + { + "scale": "y", + "orient": "left", + "gridScale": "x", + "grid": true, + "tickCount": {"signal": "ceil(height/40)"}, + "domain": false, + "labels": false, + "aria": false, + "maxExtent": 0, + "minExtent": 0, + "ticks": false, + "zindex": 0 + }, + { + "scale": "x", + "orient": "bottom", + "grid": false, + "title": "a", + "labelFlush": true, + "labelOverlap": true, + "tickCount": {"signal": "ceil(width/40)"}, + "zindex": 0 + }, + { + "scale": "y", + "orient": "left", + "grid": false, + "title": "b", + "labelOverlap": true, + "tickCount": {"signal": "ceil(height/40)"}, + "zindex": 0 + } + ] +} From 0de521887768723050b7a870dfc5f7762c6b98fa Mon Sep 17 00:00:00 2001 From: Kanit Wongsuphasawat Date: Thu, 27 Apr 2023 16:27:22 -0700 Subject: [PATCH 3/5] fix: don't apply stack for QxQ charts with non-linear scales --- src/stack.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/stack.ts b/src/stack.ts index fb4663b7c0..efcd68388f 100644 --- a/src/stack.ts +++ b/src/stack.ts @@ -104,15 +104,6 @@ function potentialStackedChannel( // if there is no explicit stacking, only apply stack if there is only one aggregate for x or y if (xAggregate !== yAggregate) { return xAggregate ? x : y; - } else { - const xScale = xDef.scale?.type; - const yScale = yDef.scale?.type; - - if (xScale && xScale !== 'linear') { - return y; - } else if (yScale && yScale !== 'linear') { - return x; - } } if (isCartesian && mark === 'bar') { From 7bf5975d187c5c24007029641d2583299e744f48 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 27 Apr 2023 23:31:40 +0000 Subject: [PATCH 4/5] chore: update examples [CI] --- examples/compiled/bar_q_qpow.png | Bin 6751 -> 6780 bytes examples/compiled/bar_q_qpow.svg | 2 +- examples/compiled/bar_q_qpow.vg.json | 10 +--------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/examples/compiled/bar_q_qpow.png b/examples/compiled/bar_q_qpow.png index 2653d4979112aca32cd57037882e9035f0aafa2f..4218f3713afabfedb78f117e3859c7e16a4ecc93 100644 GIT binary patch literal 6780 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 literal 6751 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 diff --git a/examples/compiled/bar_q_qpow.svg b/examples/compiled/bar_q_qpow.svg index 452928830a..8e92fa51fe 100644 --- a/examples/compiled/bar_q_qpow.svg +++ b/examples/compiled/bar_q_qpow.svg @@ -1 +1 @@ -02,0004,0006,0008,000a01020304050b \ No newline at end of file +3,0003,2003,4003,6003,8004,000a01020304050b \ No newline at end of file diff --git a/examples/compiled/bar_q_qpow.vg.json b/examples/compiled/bar_q_qpow.vg.json index fe162ad6e8..6887375a4b 100644 --- a/examples/compiled/bar_q_qpow.vg.json +++ b/examples/compiled/bar_q_qpow.vg.json @@ -18,14 +18,6 @@ "name": "data_0", "source": "source_0", "transform": [ - { - "type": "stack", - "groupby": ["b"], - "field": "a", - "sort": {"field": [], "order": []}, - "as": ["a_start", "a_end"], - "offset": "zero" - }, { "type": "filter", "expr": "isValid(datum[\"a\"]) && isFinite(+datum[\"a\"]) && isValid(datum[\"b\"]) && isFinite(+datum[\"b\"])" @@ -58,7 +50,7 @@ { "name": "x", "type": "linear", - "domain": {"data": "data_0", "fields": ["a_start", "a_end"]}, + "domain": {"data": "data_0", "field": "a"}, "range": [0, {"signal": "width"}], "nice": true, "zero": false, From e1528f313c0977f3e7843963f525df022b8a0d55 Mon Sep 17 00:00:00 2001 From: Kanit Wongsuphasawat Date: Fri, 28 Apr 2023 15:01:44 -0700 Subject: [PATCH 5/5] fix: don't show can't stack warning if stack is not explicitly defined --- src/stack.ts | 4 +++- test/stack.test.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/stack.ts b/src/stack.ts index efcd68388f..22fa87ce12 100644 --- a/src/stack.ts +++ b/src/stack.ts @@ -238,7 +238,9 @@ export function stack(m: Mark | MarkDef, encoding: Encoding): StackPrope // warn when stacking non-linear if (stackedFieldDef?.scale?.type && stackedFieldDef?.scale?.type !== ScaleType.LINEAR) { - log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type)); + if (stackedFieldDef?.stack) { + log.warn(log.message.cannotStackNonLinearScale(stackedFieldDef.scale.type)); + } return null; } diff --git a/test/stack.test.ts b/test/stack.test.ts index e66556691f..f8d29dc23d 100644 --- a/test/stack.test.ts +++ b/test/stack.test.ts @@ -234,7 +234,7 @@ describe('stack', () => { it( 'should always warn if the aggregated axis has non-linear scale', log.wrap(localLogger => { - for (const s of [undefined, 'center', 'zero', 'normalize'] as const) { + for (const s of ['center', 'zero', 'normalize'] as const) { for (const scaleType of [ScaleType.LOG, ScaleType.POW, ScaleType.SQRT]) { const marks = s === undefined ? STACK_BY_DEFAULT_NON_POLAR_MARKS : STACKABLE_NON_POLAR_MARKS; for (const mark of marks) {