Channels & Encoding: how the inspector binds each chart family

Why the inspector's binding chips change when you switch chart kinds, what required, axis, bucket, aggregate, and top-N mean, and which families re-total your numbers.

7 min read

On this page

A channel is one visual slot a chart fills with a field from your data: the bottom axis, the left axis, the slices of a pie, the source and target of a flow. The inspector's Data tab shows one chip per channel, and you tap a chip to pick its field and shape it.

The Binding data guide walks the everyday line-and-bar path (Group by, Value, Split into series). This page explains the part that surprises people: the set of chips is not fixed. It changes with the chart kind, because different chart families plot data in fundamentally different ways. A pie has slices, not axes. A flow chart has a source and a target. A gauge has a single number. So when you switch a widget from a bar to a pie to a sankey, the chips in the Data tab swap to match.

Select a widget, bind its source, then set the channels that shape the chart.

Why the chips change#

Every chart kind belongs to a family, and the family decides which channels you see. The inspector reads the active kind, looks up its family, and renders exactly that family's channel chips. Nothing about your widget is broken when the chips look different from a neighbor's: the controls are simply describing what that kind needs.

Here is the same idea stated as the rule the app follows: pick a kind, get that kind's family, get that family's channels. Switch kinds and the channels re-derive. This is why a heatmap asks for an X, a Y, and a Value while a donut asks only for a Category and a Value.

The families and their channels#

The table below is the full map. The chip labels are the words you actually see in the Data tab.

FamilyExample kindsChannels you bind
Cartesianline, area, bar, column, stacked bar, lollipop, streamGroup by (X), Value (Y), Split into series, Color
Scatterscatter, bubble, hexbin, contourX (a number), Y (a number), Size (optional), Color
Distributionbox plot, violin, ridgeline, beeswarm, stripCategory (optional), Value, Split into series
Histogramhistogram, densityValue (a single number to bin)
Part of a wholepie, donut, funnel, pyramid, waffleCategory, Value
Flow / relationalsankey, chord, network, alluvial, arcSource, Target, Value
Matrixheatmap, heatmap matrix, punchcardX, Y, Value
Calendarcalendar heatmapDate, Value
RadarradarAxis, Value, Split into series
Single valuegauge, meter, progressValue
Financialcandlestick, OHLC, volume profileDate (Open/High/Low/Close come from the columns, see below)
Multi-dimensionparallel coordinates, correlation matrixGroup (the chart reads your numeric columns)
Hierarchytreemap, sunburstCategory, Value

A few of these read more than the chips show. The financial kinds (candlestick, OHLC) plot from columns literally named open, high, low, close, so the only thing you bind is the Date; you shape the four price columns in the Shape data step. The multi-dimension kinds read all of your numeric columns at once rather than asking you to bind each. The hierarchy kinds take a Category and a Value and build the nested shape for you.

The Sankey inspector's Data section with Source, Target, and Value field chips (Source bound to Category, Target to Merchant, Value to Amount) instead of an X and a Y axis.
A flow family swaps the axis chips for Source, Target, and Value.

What the chip controls mean#

Each chip can offer a small set of controls. Which ones appear depends on the channel and on the field you bind to it.

Required

Some channels must be filled for the chart to draw. A pie needs both a Category and a Value; a flow needs a Source, a Target, and a Value. The chip for a required channel shows an outline prompt until you bind it.

Axis

Channels that map to a real chart axis (the X and Y of a bar, for instance) carry axis-label and tick-format controls. A pie slice or a sankey link is not on an axis, so those chips skip the axis controls.

Bucket by

Appears only on a Group-by channel that accepts dates AND when the field you bound is a date. It groups timestamps into Day, Week, Month, Quarter, Year, or a repeating cycle (day of week, month of year).

Aggregate

Appears on a Value (measure) channel. It chooses how to combine rows that fall into the same group: Sum, Average, Count, and so on. See "Which families re-total" below for when it actually does work.

Keep top N

Appears on a category channel (not on dates or values). It limits a high-cardinality field to its largest few groups and folds the rest into "Other", so a 387-slice pie becomes a clean top 8 plus Other.

Allows one or many

Most channels take one field. A few (like the Value of a multi-line cartesian chart) take a list, so the chip lets you add several fields and shows one picker per bound field.

The field picker inside each chip is filtered to the fields that make sense for that channel. A Value channel offers numbers, never an ID column or a foreign key. A Group-by channel offers categories and dates. This is why the same feed shows different field lists on different chips: the chip only proposes fields it can actually plot.

A Value channel chip in the inspector summing the Amount field, with its plain-English summary reading sum and spending.
A Value chip carries the Aggregate control; its summary reads back what it will do.
A Group-by channel chip bound to a Date field bucketed by month, showing the summary group by Date by month.
The Bucket-by control appears because the channel takes dates and the bound field is a date.

Which families re-total your numbers#

This is the most useful nuance on the page, because it explains a control that sometimes does nothing.

When a chart plots one mark per row, your raw feed rows usually need to be rolled up to be meaningful (all of January's transactions become one bar). For those families, the Aggregate control on the Value chip is what does the rolling up, and changing it from Sum to Average to Count changes the chart. These are the families that re-total at render time:

  • Cartesian (line, bar, area, and friends)
  • Part of a whole (pie, donut, funnel)
  • Radar
  • Matrix (heatmap, punchcard)
  • Calendar (calendar heatmap)
  • Flow (sankey, chord), which sums repeated source-to-target links into one

Other families do not re-total, because they handle the math themselves or plot raw points:

  • Histogram and density bin the numbers and count them for you.
  • Box plot, violin, and the other distribution kinds compute their own quartiles and shapes.
  • Scatter and bubble plot one point per row, untouched.
  • Single value (gauge, meter, progress) and financial kinds read the value as given.

Why does Sum do nothing on my histogram?

If you set the Aggregate to Sum on a histogram, a box plot, or a scatter and the chart does not change, that is expected. Those kinds do their own counting or plot raw points, so there is nothing to re-total. The same Sum on a bar or a pie matters, because those families roll your rows up before drawing.

Counting twice

If you already totaled a field in the Shape data step (a query-level Summarize) and the chart then totals it again, you get a doubled number. The Value chip flags this with an amber warning that reads "Already aggregated in Shape data" and offers a one-tap Set to None to stop the second pass. Trust the warning.
A Value channel chip showing the amber Already aggregated in Shape data double-count warning, with a one-tap Set to None action.
The double-count warning fires when both the query and the chart total the same field.

A worked example: the same data, three families#

Say you have a Transactions feed and you want to understand category spend.

  1. As a bar (cartesian)

    Pick a Column chart. You get a Group by chip and a Value chip. Bind Group by to Category, bind Value to Amount, leave the Aggregate on Sum, and set Show amount as to Spending. The renderer totals each category into one bar.

  2. As a donut (part of a whole)

    Switch the kind to Donut. The chips become Category and Value (no axes, because slices are not on an axis). Your Category and Amount carry over into them, and the renderer still totals per category, now drawn as slices. Add Keep top 8 so a long category list stays readable.

  3. As a flow (relational)

    Switch to Sankey. Now the chips are Source, Target, and Value. A single category field cannot fill both a Source and a Target, so you bind, say, Account to Source and Category to Target and Amount to Value, and the chart shows money flowing from accounts into categories. Repeated account-to-category pairs are summed into one link.

The point: your underlying data never changed. Switching families only changed which channels the inspector asked you to fill, and how the renderer treated the numbers.

Switching kinds keeps what it can

When you change a chart kind, BankSync re-binds your fields by role: dates head to the time or date channel, numbers head to the value channel, categories head to the category or split channel. Fields that the new family has no slot for are dropped. Moving from a multi-series line to a pie (which has only Category and Value) can leave a field behind, so glance at the chips after a switch and re-bind anything that came up empty.

Custom widgets bind the same way#

A custom widget (code you or an agent author) is not a black box to the inspector. It ships its own list of channels, the same kind of description the built-in families use, so it gets the same chip-based Data tab: a field picker per channel, filtered to the right field types, with labels and formats. That means a custom chart re-enters the normal binding flow instead of forcing you to hand-edit a spec.

Browse the chart kinds

Use this page with your AI assistant

Every BankSync doc is available as plain Markdown for agents and LLMs.