From 9ae6cf3b98cebb47f7a4122d0da632f47c061fd2 Mon Sep 17 00:00:00 2001 From: Younghoon Kim Date: Tue, 11 Oct 2022 17:45:59 -0700 Subject: [PATCH] Change the init logic to assgin better orient for ranged bar --- examples/compiled/bar_ranged_not_binned.png | Bin 4901 -> 5821 bytes examples/compiled/bar_ranged_not_binned.svg | 2 +- .../compiled/bar_ranged_not_binned.vg.json | 10 +-- examples/compiled/histogram_nonlinear.png | Bin 7060 -> 6999 bytes examples/compiled/histogram_nonlinear.svg | 2 +- .../compiled/layer_cumulative_histogram.png | Bin 10451 -> 9849 bytes .../compiled/layer_cumulative_histogram.svg | 2 +- .../layer_cumulative_histogram.vg.json | 60 ++++++++-------- examples/compiled/wheat_wages.png | Bin 31648 -> 31849 bytes examples/specs/histogram_nonlinear.vl.json | 2 +- .../specs/layer_cumulative_histogram.vl.json | 3 +- ...er_cumulative_histogram_normalized.vl.json | 6 +- .../normalized/wheat_wages_normalized.vl.json | 9 ++- examples/specs/wheat_wages.vl.json | 4 +- src/compile/mark/init.ts | 14 ++-- test/compile/mark/bar.test.ts | 66 ++++++++++++++---- test/compile/mark/init.test.ts | 40 +++++++++++ 17 files changed, 157 insertions(+), 63 deletions(-) diff --git a/examples/compiled/bar_ranged_not_binned.png b/examples/compiled/bar_ranged_not_binned.png index b981f6e5f215e7ceecb3df0694d73b26c58b2d3b..40885562b47ccc22477eb36d3b265bf8832bc498 100644 GIT binary patch literal 5821 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 PkA`$K^wcX=ZKD1I`FadK literal 4901 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 \ No newline at end of file +20406080100b020406080100b, b2 \ No newline at end of file diff --git a/examples/compiled/bar_ranged_not_binned.vg.json b/examples/compiled/bar_ranged_not_binned.vg.json index 415bc4d1a21..220fcb013bd 100644 --- a/examples/compiled/bar_ranged_not_binned.vg.json +++ b/examples/compiled/bar_ranged_not_binned.vg.json @@ -44,8 +44,8 @@ "description": { "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; b2: \" + (format(datum[\"b2\"], \"\"))" }, - "x": {"scale": "x", "field": "b"}, - "x2": {"scale": "x", "value": 0}, + "xc": {"scale": "x", "field": "b"}, + "width": {"value": 5}, "y": {"scale": "y", "field": "b"}, "y2": {"scale": "y", "field": "b2"} } @@ -59,7 +59,8 @@ "domain": {"data": "data_0", "field": "b"}, "range": [0, {"signal": "width"}], "nice": true, - "zero": true + "zero": false, + "padding": 5 }, { "name": "y", @@ -67,8 +68,7 @@ "domain": {"data": "data_0", "fields": ["b", "b2"]}, "range": [{"signal": "height"}, 0], "nice": true, - "zero": false, - "padding": 5 + "zero": true } ], "axes": [ diff --git a/examples/compiled/histogram_nonlinear.png b/examples/compiled/histogram_nonlinear.png index d062997056f82e7f849e1b1cd93c2668a5c7001c..14fd59ba2fec1aa5a5fdea9cb6a623fca74bf41c 100644 GIT binary patch literal 6999 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 E0KqY5jQ{`u literal 7060 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 \ No newline at end of file +08.3312.5016.6733.3350.0066.6783.330%50%100%Distribution of Frame Render Time (ms) \ No newline at end of file diff --git a/examples/compiled/layer_cumulative_histogram.png b/examples/compiled/layer_cumulative_histogram.png index dfa42c17a0be9e8bfe39a15ca8821def029e295c..03ccb7fa23eb67624025489693eb814791037f58 100644 GIT binary patch literal 9849 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 TQk;cn$q;hVN>Z7UIF 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 b;vp#f_UqTp^f@@Ch \ No newline at end of file +246810IMDB Rating05001,0001,5002,0002,5003,000Cumulative Count, count \ No newline at end of file diff --git a/examples/compiled/layer_cumulative_histogram.vg.json b/examples/compiled/layer_cumulative_histogram.vg.json index 86f4c6f9c6b..eb388db23d1 100644 --- a/examples/compiled/layer_cumulative_histogram.vg.json +++ b/examples/compiled/layer_cumulative_histogram.vg.json @@ -47,6 +47,14 @@ "name": "data_0", "source": "source_0", "transform": [ + { + "type": "stack", + "groupby": ["bin_IMDB_Rating", "bin_IMDB_Rating"], + "field": "Cumulative Count", + "sort": {"field": [], "order": []}, + "as": ["Cumulative Count_start", "Cumulative Count_end"], + "offset": "zero" + }, { "type": "filter", "expr": "isValid(datum[\"bin_IMDB_Rating\"]) && isFinite(+datum[\"bin_IMDB_Rating\"]) && isValid(datum[\"Cumulative Count\"]) && isFinite(+datum[\"Cumulative Count\"])" @@ -57,6 +65,14 @@ "name": "data_1", "source": "source_0", "transform": [ + { + "type": "stack", + "groupby": ["bin_IMDB_Rating", "bin_IMDB_Rating"], + "field": "count", + "sort": {"field": [], "order": []}, + "as": ["count_start", "count_end"], + "offset": "zero" + }, { "type": "filter", "expr": "isValid(datum[\"bin_IMDB_Rating\"]) && isFinite(+datum[\"bin_IMDB_Rating\"]) && isValid(datum[\"count\"]) && isFinite(+datum[\"count\"])" @@ -75,12 +91,12 @@ "fill": {"value": "#4c78a8"}, "ariaRoleDescription": {"value": "bar"}, "description": { - "signal": "\"IMDB Rating: \" + (format(datum[\"bin_IMDB_Rating\"], \"\")) + \"; Cumulative Count: \" + (format(datum[\"Cumulative Count\"], \"\")) + \"; bin_IMDB_Rating_end: \" + (format(datum[\"bin_IMDB_Rating_end\"], \"\"))" + "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"null\" : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; Cumulative Count: \" + (format(datum[\"Cumulative Count\"], \"\"))" }, - "x": {"scale": "x", "field": "bin_IMDB_Rating"}, - "x2": {"scale": "x", "field": "bin_IMDB_Rating_end"}, - "y": {"scale": "y", "field": "Cumulative Count"}, - "y2": {"scale": "y", "value": 0} + "x2": {"scale": "x", "field": "bin_IMDB_Rating", "offset": 1}, + "x": {"scale": "x", "field": "bin_IMDB_Rating_end"}, + "y": {"scale": "y", "field": "Cumulative Count_end"}, + "y2": {"scale": "y", "field": "Cumulative Count_start"} } } }, @@ -95,12 +111,12 @@ "fill": {"value": "yellow"}, "ariaRoleDescription": {"value": "bar"}, "description": { - "signal": "\"IMDB Rating: \" + (format(datum[\"bin_IMDB_Rating\"], \"\")) + \"; count: \" + (format(datum[\"count\"], \"\")) + \"; bin_IMDB_Rating_end: \" + (format(datum[\"bin_IMDB_Rating_end\"], \"\"))" + "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"null\" : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; count: \" + (format(datum[\"count\"], \"\"))" }, - "x": {"scale": "x", "field": "bin_IMDB_Rating"}, - "x2": {"scale": "x", "field": "bin_IMDB_Rating_end"}, - "y": {"scale": "y", "field": "count"}, - "y2": {"scale": "y", "value": 0} + "x2": {"scale": "x", "field": "bin_IMDB_Rating", "offset": 1}, + "x": {"scale": "x", "field": "bin_IMDB_Rating_end"}, + "y": {"scale": "y", "field": "count_end"}, + "y2": {"scale": "y", "field": "count_start"} } } } @@ -118,17 +134,17 @@ ] }, "range": [0, {"signal": "width"}], - "zero": false, - "nice": true, - "padding": 5 + "zero": false }, { "name": "y", "type": "linear", "domain": { "fields": [ - {"data": "data_0", "field": "Cumulative Count"}, - {"data": "data_1", "field": "count"} + {"data": "data_0", "field": "Cumulative Count_start"}, + {"data": "data_0", "field": "Cumulative Count_end"}, + {"data": "data_1", "field": "count_start"}, + {"data": "data_1", "field": "count_end"} ] }, "range": [{"signal": "height"}, 0], @@ -137,20 +153,6 @@ } ], "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", diff --git a/examples/compiled/wheat_wages.png b/examples/compiled/wheat_wages.png index 67270dcb31aac18ec4fb0b11d88bbed32ff1770e..40b394512d92c6a0c1653c413177c83dc59e42dc 100644 GIT binary patch literal 31849 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 B%X|O; diff --git a/examples/specs/histogram_nonlinear.vl.json b/examples/specs/histogram_nonlinear.vl.json index ae56afc5be3..6a291c340fd 100644 --- a/examples/specs/histogram_nonlinear.vl.json +++ b/examples/specs/histogram_nonlinear.vl.json @@ -48,7 +48,7 @@ "title": "Distribution of Frame Render Time (ms)", "width": {"step": 40}, "height": 100, - "mark": {"type": "bar", "cornerRadiusEnd": 0}, + "mark": {"type": "bar", "cornerRadiusEnd": 0, "orient": "vertical"}, "encoding": { "x": { "title": "", diff --git a/examples/specs/layer_cumulative_histogram.vl.json b/examples/specs/layer_cumulative_histogram.vl.json index 2aa5682c7d6..d7e684a2416 100644 --- a/examples/specs/layer_cumulative_histogram.vl.json +++ b/examples/specs/layer_cumulative_histogram.vl.json @@ -19,7 +19,8 @@ "x": { "field": "bin_IMDB_Rating", "type": "quantitative", "scale": {"zero": false}, - "title": "IMDB Rating" + "title": "IMDB Rating", + "bin": "binned" }, "x2": {"field": "bin_IMDB_Rating_end"} }, diff --git a/examples/specs/normalized/layer_cumulative_histogram_normalized.vl.json b/examples/specs/normalized/layer_cumulative_histogram_normalized.vl.json index 66e87cd1d66..5814122d36f 100644 --- a/examples/specs/normalized/layer_cumulative_histogram_normalized.vl.json +++ b/examples/specs/normalized/layer_cumulative_histogram_normalized.vl.json @@ -9,7 +9,8 @@ "field": "bin_IMDB_Rating", "type": "quantitative", "scale": {"zero": false}, - "title": "IMDB Rating" + "title": "IMDB Rating", + "bin": "binned" }, "x2": {"field": "bin_IMDB_Rating_end"}, "y": {"field": "Cumulative Count", "type": "quantitative"} @@ -22,7 +23,8 @@ "field": "bin_IMDB_Rating", "type": "quantitative", "scale": {"zero": false}, - "title": "IMDB Rating" + "title": "IMDB Rating", + "bin": "binned" }, "x2": {"field": "bin_IMDB_Rating_end"}, "y": {"field": "count", "type": "quantitative"} diff --git a/examples/specs/normalized/wheat_wages_normalized.vl.json b/examples/specs/normalized/wheat_wages_normalized.vl.json index df4b388ba90..083286fbe37 100644 --- a/examples/specs/normalized/wheat_wages_normalized.vl.json +++ b/examples/specs/normalized/wheat_wages_normalized.vl.json @@ -5,7 +5,12 @@ "data": {"url": "data/wheat.json"}, "layer": [ { - "mark": {"type": "bar", "fill": "#aaa", "stroke": "#999"}, + "mark": { + "type": "bar", + "fill": "#aaa", + "stroke": "#999", + "orient": "vertical" + }, "encoding": { "y": {"type": "quantitative", "axis": {"zindex": 1}, "field": "wheat"}, "x": { @@ -75,7 +80,7 @@ }, { "data": {"url": "data/monarchs.json"}, - "mark": {"type": "bar", "stroke": "#000"}, + "mark": {"type": "bar", "stroke": "#000", "orient": "vertical"}, "encoding": { "y": {"type": "quantitative", "axis": {"zindex": 1}, "field": "y"}, "x": { diff --git a/examples/specs/wheat_wages.vl.json b/examples/specs/wheat_wages.vl.json index 7eaf6de7c43..865da646051 100644 --- a/examples/specs/wheat_wages.vl.json +++ b/examples/specs/wheat_wages.vl.json @@ -16,7 +16,7 @@ }, "layer": [ { - "mark": {"type": "bar", "fill": "#aaa", "stroke": "#999"}, + "mark": {"type": "bar", "fill": "#aaa", "stroke": "#999", "orient": "vertical"}, "encoding": { "x": {"field": "year"}, "x2": {"field": "year_end"}, @@ -74,7 +74,7 @@ { "calculate": "((!datum.commonwealth && datum.index % 2) ? -1: 1) * 2 + 95", "as": "offset" }, { "calculate": "95", "as": "y" } ], - "mark": {"type": "bar", "stroke": "#000"}, + "mark": {"type": "bar", "stroke": "#000", "orient": "vertical"}, "encoding": { "x": {"field": "start"}, "x2": {"field": "end"}, diff --git a/src/compile/mark/init.ts b/src/compile/mark/init.ts index daa16460010..edd32312bd9 100644 --- a/src/compile/mark/init.ts +++ b/src/compile/mark/init.ts @@ -123,18 +123,24 @@ function orient(mark: Mark, encoding: Encoding, specifiedOrient: Orienta return specifiedOrient; } - // If y is range and x is non-range, non-bin Q, y is likely a prebinned field + // If y is range and x is non-range, non-bin Q if (!x2) { if ((isFieldDef(x) && x.type === QUANTITATIVE && !isBinning(x.bin)) || isNumericDataDef(x)) { - return 'horizontal'; + if (isFieldDef(y) && isBinned(y.bin)) { + return 'horizontal'; + } } + return 'vertical'; } - // If x is range and y is non-range, non-bin Q, x is likely a prebinned field + // If x is range and y is non-range, non-bin Q if (!y2) { if ((isFieldDef(y) && y.type === QUANTITATIVE && !isBinning(y.bin)) || isNumericDataDef(y)) { - return 'vertical'; + if (isFieldDef(x) && isBinned(x.bin)) { + return 'vertical'; + } } + return 'horizontal'; } } diff --git a/test/compile/mark/bar.test.ts b/test/compile/mark/bar.test.ts index 7c7d354843e..29fabebecd6 100644 --- a/test/compile/mark/bar.test.ts +++ b/test/compile/mark/bar.test.ts @@ -43,9 +43,9 @@ describe('Mark: Bar', () => { expect(props.height).toBeUndefined(); }); - it('should draw vertical bar, with y from zero to field value and bar with quantitative x, x2, and y', () => { - const x: PositionFieldDef = {field: 'bin_start', type: 'quantitative'}; - const x2: SecondaryFieldDef = {field: 'bin_end'}; + it('should draw horizontal bar, with y from zero to field value and bar with quantitative x, x2, and y', () => { + const x: PositionFieldDef = {field: 'q_start', type: 'quantitative'}; + const x2: SecondaryFieldDef = {field: 'q_end'}; const model = parseUnitModelWithScaleAndLayoutSize({ data: {url: 'data/cars.json'}, mark: 'bar', @@ -56,11 +56,30 @@ describe('Mark: Bar', () => { } }); const props = bar.encodeEntry(model); - expect(props.x).toEqual({scale: 'x', field: 'bin_start'}); - expect(props.x2).toEqual({scale: 'x', field: 'bin_end'}); - expect(props.y).toEqual({scale: 'y', field: 'Acceleration'}); + expect(props.x).toEqual({scale: 'x', field: 'q_start'}); + expect(props.x2).toEqual({scale: 'x', field: 'q_end'}); + expect(props.yc).toEqual({scale: 'y', field: 'Acceleration'}); + expect(props.y).toBeUndefined(); + expect(props.height).toEqual({value: defaultBarConfig.continuousBandSize}); + }); + + it('should draw vertical bar, with y from zero to field value and bar with binned x, x2, and y', () => { + const x: PositionFieldDef = {field: 'bin_start', type: 'quantitative', bin: 'binned'}; + const x2: SecondaryFieldDef = {field: 'bin_end'}; + const model = parseUnitModelWithScaleAndLayoutSize({ + data: {url: 'data/cars.json'}, + mark: 'bar', + encoding: { + x, + x2, + y: {type: 'quantitative', field: 'Acceleration', aggregate: 'mean'} + } + }); + const props = bar.encodeEntry(model); + expect(props.x).toEqual({scale: 'x', field: 'bin_end'}); + expect(props.x2).toEqual({scale: 'x', field: 'bin_start', offset: 1}); + expect(props.y).toEqual({scale: 'y', field: 'mean_Acceleration'}); expect(props.y2).toEqual({scale: 'y', value: 0}); - expect(props.height).toBeUndefined(); }); it('should draw vertical bar, with y from zero to field value and with band value for x/width when domain that includes zero is specified', () => { @@ -181,8 +200,8 @@ describe('Mark: Bar', () => { }); }); - it('should draw horizontal bar, with y from zero to field value and bar with quantitative x, x2, and y', () => { - const y: PositionFieldDef = {field: 'bin_start', type: 'quantitative'}; + it('should draw vertical bar, with y from zero to field value and bar with binned y, y2, and x', () => { + const y: PositionFieldDef = {field: 'bin_start', type: 'quantitative', bin: 'binned'}; const y2: SecondaryFieldDef = {field: 'bin_end'}; const model = parseUnitModelWithScaleAndLayoutSize({ data: {url: 'data/cars.json'}, @@ -190,15 +209,34 @@ describe('Mark: Bar', () => { encoding: { y, y2, - x: {type: 'quantitative', field: 'Acceleration'} + x: {type: 'quantitative', field: 'Acceleration', aggregate: 'mean'} } }); const props = bar.encodeEntry(model); - expect(props.y).toEqual({scale: 'y', field: 'bin_start'}); - expect(props.y2).toEqual({scale: 'y', field: 'bin_end'}); - expect(props.x).toEqual({scale: 'x', field: 'Acceleration'}); + expect(props.y).toEqual({scale: 'y', field: 'bin_end', offset: 1}); + expect(props.y2).toEqual({scale: 'y', field: 'bin_start'}); + expect(props.x).toEqual({scale: 'x', field: 'mean_Acceleration'}); expect(props.x2).toEqual({scale: 'x', value: 0}); - expect(props.height).toBeUndefined(); + }); + + it('should draw horizontal bar, with y from zero to field value and bar with quantitative y, y2, and x', () => { + const y: PositionFieldDef = {field: 'q_start', type: 'quantitative'}; + const y2: SecondaryFieldDef = {field: 'q_end'}; + const model = parseUnitModelWithScaleAndLayoutSize({ + data: {url: 'data/cars.json'}, + mark: 'bar', + encoding: { + y, + y2, + x: {type: 'quantitative', field: 'Acceleration'} + } + }); + const props = bar.encodeEntry(model); + expect(props.y).toEqual({scale: 'y', field: 'q_start'}); + expect(props.y2).toEqual({scale: 'y', field: 'q_end'}); + expect(props.xc).toEqual({scale: 'x', field: 'Acceleration'}); + expect(props.x).toBeUndefined(); + expect(props.width).toEqual({value: defaultBarConfig.continuousBandSize}); }); describe('simple horizontal with point scale', () => { diff --git a/test/compile/mark/init.test.ts b/test/compile/mark/init.test.ts index ae1ad161643..11556576cf0 100644 --- a/test/compile/mark/init.test.ts +++ b/test/compile/mark/init.test.ts @@ -383,6 +383,46 @@ describe('compile/mark/init', () => { expect(model.markDef.orient).toBe('horizontal'); }); + it('should return correct orient for bar with horizontal un-binned data', () => { + const model = parseUnitModelWithScaleAndLayoutSize({ + mark: 'bar', + encoding: { + x: { + field: 'q_start', + type: 'quantitative' + }, + x2: { + field: 'q_end' + }, + y: { + field: 'count', + type: 'quantitative' + } + } + }); + expect(model.markDef.orient).toBe('horizontal'); + }); + + it('should return correct orient for bar with vertical un-binned data', () => { + const model = parseUnitModelWithScaleAndLayoutSize({ + mark: 'bar', + encoding: { + y: { + field: 'q_start', + type: 'quantitative' + }, + y2: { + field: 'q_end' + }, + x: { + field: 'count', + type: 'quantitative' + } + } + }); + expect(model.markDef.orient).toBe('vertical'); + }); + it('should return correct orient for area with vertical binned data', () => { const model = parseUnitModelWithScaleAndLayoutSize({ mark: 'area',