# DotBin Transform

The **dotbin** transform ≥ 5.7 calculates bin positions for stacking dots in a dot plot. This transform implements the “dot density” algorithm of Wilkinson’s “Dot Plots”, The American Statistician, 1999. If a *groupby* parameter is provided, bins are computed separately per group. After computing dot positions, the stack transform can be used to compute stacked dot positions.

## Transform Parameters

Property | Type | Description |
---|---|---|

field | Field | The data field to bin.Required. |

groupby | Field[ ] | The data fields to group by. If not specified, a single group containing all data objects will be used. |

step | Number | The step size (bin width) within which dots should be stacked. Defaults to 1/30 of the extent of the data field. |

smooth | Boolean | A boolean flag indicating if dot density stacks should be smoothed to reduce variance (default `false` ). |

signal | String | If defined, binds the computed binning parameters (an object with start, stop and step properties) to a signal with the given name. |

as | String | The output fields for the sample value and associated probability. The default is `"bin"` . |

## Usage

This example computes dot plot locations for the *value* field with default *step* parameter:

```
[
{"type": "dotbin", "field": "amount", "as": "bin", "signal": "dotbins"},
{"type": "stack", "field": "amount", "groupby": ["bin"], "as": ["y0", "y1"]}
]
```

The calculated start, stop, and step values are bound to a new signal named `dotbins`

. A dot plot can be constructed using a `symbol`

mark with the *x*-coordinate determined by a linear scale over the *bin* field, and *y*-coordinate set to the mid-point between *y0* and *y1*. The y-axis scale and the size of the `symbol`

mark depend on the x-axis scale and the output *dotbins.step* value. For more, see the dot-plot and quantile-dot-plot examples.