Skip to content

Commit

Permalink
fix: make bin/timeUnit band respect minBandSize config (vega#8958)
Browse files Browse the repository at this point in the history
Co-authored-by: GitHub Actions Bot <vega-actions-bot@users.noreply.github.com>
  • Loading branch information
2 people authored and BradyJ27 committed Oct 19, 2023
1 parent f474300 commit 370e670
Show file tree
Hide file tree
Showing 51 changed files with 926 additions and 197 deletions.
12 changes: 10 additions & 2 deletions examples/compiled/bar_1d_binned.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,17 @@
"x2": {
"scale": "x",
"field": "bin_maxbins_100_minstep_1_delay",
"offset": 1
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay_end\"]) - scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay_end\"]) - scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "bin_maxbins_100_minstep_1_delay_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay_end\"]) - scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay_end\"]) - scale(\"x\", datum[\"bin_maxbins_100_minstep_1_delay\"])))) : -0.5)"
}
},
"x": {"scale": "x", "field": "bin_maxbins_100_minstep_1_delay_end"},
"y": {"value": 0},
"y2": {"field": {"group": "height"}}
}
Expand Down
12 changes: 10 additions & 2 deletions examples/compiled/bar_aggregate_count.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,17 @@
"x2": {
"scale": "x",
"field": "bin_maxbins_10_precipitation",
"offset": 1
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_maxbins_10_precipitation_end\"]) - scale(\"x\", datum[\"bin_maxbins_10_precipitation\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_maxbins_10_precipitation_end\"]) - scale(\"x\", datum[\"bin_maxbins_10_precipitation\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "bin_maxbins_10_precipitation_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_maxbins_10_precipitation_end\"]) - scale(\"x\", datum[\"bin_maxbins_10_precipitation\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_maxbins_10_precipitation_end\"]) - scale(\"x\", datum[\"bin_maxbins_10_precipitation\"])))) : -0.5)"
}
},
"x": {"scale": "x", "field": "bin_maxbins_10_precipitation_end"},
"y": {"scale": "y", "field": "__count"},
"y2": {"scale": "y", "value": 0}
}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_binned_data.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,20 @@
"description": {
"signal": "\"bin_start: \" + (!isValid(datum[\"bin_start\"]) || !isFinite(+datum[\"bin_start\"]) ? \"null\" : format(datum[\"bin_start\"], \"\") + \"\" + format(datum[\"bin_end\"], \"\")) + \"; count: \" + (format(datum[\"count\"], \"\"))"
},
"x2": {"scale": "x", "field": "bin_start", "offset": 1},
"x": {"scale": "x", "field": "bin_end"},
"x2": {
"scale": "x",
"field": "bin_start",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_start_end\"]) - scale(\"x\", datum[\"bin_start\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_start_end\"]) - scale(\"x\", datum[\"bin_start\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "bin_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"bin_start_end\"]) - scale(\"x\", datum[\"bin_start\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"bin_start_end\"]) - scale(\"x\", datum[\"bin_start\"])))) : -0.5)"
}
},
"y": {"scale": "y", "field": "count_end"},
"y2": {"scale": "y", "field": "count_start"}
}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_custom_time_domain.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,20 @@
"description": {
"signal": "\"a (hours): \" + (timeFormat(datum[\"hours_a\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; b: \" + (format(datum[\"b\"], \"\"))"
},
"x2": {"scale": "x", "field": "hours_a", "offset": 1},
"x": {"scale": "x", "field": "hours_a_end"},
"x2": {
"scale": "x",
"field": "hours_a",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"hours_a_end\"]) - scale(\"x\", datum[\"hours_a\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"hours_a_end\"]) - scale(\"x\", datum[\"hours_a\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "hours_a_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"hours_a_end\"]) - scale(\"x\", datum[\"hours_a\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"hours_a_end\"]) - scale(\"x\", datum[\"hours_a\"])))) : -0.5)"
}
},
"y": {"scale": "y", "field": "b_end"},
"y2": {"scale": "y", "field": "b_start"}
}
Expand Down
9 changes: 7 additions & 2 deletions examples/compiled/bar_month_band.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,15 @@
},
"x2": {
"signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])",
"offset": 1
"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.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)"
}
},
"y": {"scale": "y", "field": "mean_precipitation"},
"y2": {"scale": "y", "value": 0}
Expand Down
9 changes: 7 additions & 2 deletions examples/compiled/bar_month_band_config.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,15 @@
},
"x2": {
"signal": "scale(\"x\", 0.15000000000000002 * datum[\"month_date\"] + 0.85 * datum[\"month_date_end\"])",
"offset": 1
"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.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)"
}
},
"y": {"scale": "y", "field": "mean_precipitation"},
"y2": {"scale": "y", "value": 0}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_month_temporal.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,20 @@
"description": {
"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": {"scale": "x", "field": "month_date", "offset": 1},
"x": {"scale": "x", "field": "month_date_end"},
"x2": {
"scale": "x",
"field": "month_date",
"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": {
"scale": "x",
"field": "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)"
}
},
"y": {"scale": "y", "field": "mean_precipitation"},
"y2": {"scale": "y", "value": 0}
}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_month_temporal_initial.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,20 @@
"description": {
"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": {"scale": "x", "field": "month_date", "offset": 1},
"x": {"scale": "x", "field": "month_date_end"},
"x2": {
"scale": "x",
"field": "month_date",
"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": {
"scale": "x",
"field": "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)"
}
},
"y": {"scale": "y", "field": "mean_precipitation"},
"y2": {"scale": "y", "value": 0}
}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_yearmonth.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,20 @@
"description": {
"signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {"scale": "x", "field": "yearmonth_date", "offset": 1},
"x": {"scale": "x", "field": "yearmonth_date_end"},
"x2": {
"scale": "x",
"field": "yearmonth_date",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "yearmonth_date_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])))) : -0.5)"
}
},
"y": {"scale": "y", "field": "mean_temp_max"},
"y2": {"scale": "y", "value": 0}
}
Expand Down
16 changes: 14 additions & 2 deletions examples/compiled/bar_yearmonth_custom_format.vg.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,20 @@
"description": {
"signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%B of %Y')) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {"scale": "x", "field": "yearmonth_date", "offset": 1},
"x": {"scale": "x", "field": "yearmonth_date_end"},
"x2": {
"scale": "x",
"field": "yearmonth_date",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])) < 0.25 ? -0.5 * (0.25 - (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "yearmonth_date_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])) < 0.25 ? 0.5 * (0.25 - (abs(scale(\"x\", datum[\"yearmonth_date_end\"]) - scale(\"x\", datum[\"yearmonth_date\"])))) : -0.5)"
}
},
"y": {"scale": "y", "field": "mean_temp_max"},
"y2": {"scale": "y", "value": 0}
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions examples/compiled/bar_yearmonthdate_minBandSize.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
144 changes: 144 additions & 0 deletions examples/compiled/bar_yearmonthdate_minBandSize.vg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"background": "white",
"padding": 5,
"width": 997,
"height": 200,
"style": "cell",
"data": [
{
"name": "source_0",
"url": "data/seattle-weather.csv",
"format": {"type": "csv", "parse": {"date": "date"}},
"transform": [
{
"field": "date",
"type": "timeunit",
"units": ["year", "month", "date"],
"as": ["yearmonthdate_date", "yearmonthdate_date_end"]
},
{
"type": "aggregate",
"groupby": ["yearmonthdate_date", "yearmonthdate_date_end"],
"ops": ["mean"],
"fields": ["temp_max"],
"as": ["mean_temp_max"]
},
{
"type": "filter",
"expr": "(isDate(datum[\"yearmonthdate_date\"]) || (isValid(datum[\"yearmonthdate_date\"]) && isFinite(+datum[\"yearmonthdate_date\"]))) && isValid(datum[\"mean_temp_max\"]) && isFinite(+datum[\"mean_temp_max\"])"
}
]
}
],
"marks": [
{
"name": "marks",
"type": "rect",
"style": ["bar"],
"from": {"data": "source_0"},
"encode": {
"update": {
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
"signal": "\"date (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
"field": "yearmonthdate_date",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonthdate_date_end\"]) - scale(\"x\", datum[\"yearmonthdate_date\"])) < 2 ? -0.5 * (2 - (abs(scale(\"x\", datum[\"yearmonthdate_date_end\"]) - scale(\"x\", datum[\"yearmonthdate_date\"])))) : 0.5)"
}
},
"x": {
"scale": "x",
"field": "yearmonthdate_date_end",
"offset": {
"signal": "0.5 + (abs(scale(\"x\", datum[\"yearmonthdate_date_end\"]) - scale(\"x\", datum[\"yearmonthdate_date\"])) < 2 ? 0.5 * (2 - (abs(scale(\"x\", datum[\"yearmonthdate_date_end\"]) - scale(\"x\", datum[\"yearmonthdate_date\"])))) : -0.5)"
}
},
"y": {"scale": "y", "field": "mean_temp_max"},
"y2": {"scale": "y", "value": 0}
}
}
}
],
"scales": [
{
"name": "x",
"type": "time",
"domain": {
"data": "source_0",
"fields": ["yearmonthdate_date", "yearmonthdate_date_end"]
},
"range": [0, {"signal": "width"}]
},
{
"name": "y",
"type": "linear",
"domain": {"data": "source_0", "field": "mean_temp_max"},
"range": [{"signal": "height"}, 0],
"nice": true,
"zero": true
}
],
"axes": [
{
"scale": "x",
"orient": "bottom",
"gridScale": "y",
"grid": true,
"tickCount": {"signal": "ceil(width/40)"},
"tickMinStep": {
"signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
},
"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": "date (year-month-date)",
"format": {
"signal": "timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})"
},
"labelFlush": true,
"labelOverlap": true,
"tickCount": {"signal": "ceil(width/40)"},
"tickMinStep": {
"signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
},
"zindex": 0
},
{
"scale": "y",
"orient": "left",
"grid": false,
"title": "Mean of temp_max",
"labelOverlap": true,
"tickCount": {"signal": "ceil(height/40)"},
"zindex": 0
}
]
}
Loading

0 comments on commit 370e670

Please sign in to comment.