Bar and Column Series

Because bar series are just transposed column series and have the same configuration, this section covers both series at once.

Bar series are a good choice to show values for a discrete set of objects, such as item categories, specific items, or time periods such as years or quarters.

Column Series

Regular Columns

To create a column chart, we need to use series type 'column'. We also have to provide the xKey and at least one yKey.

Since 'column' and 'bar' series can be stacked or grouped, they can have multiple yKeys, with one key for each stack/group component.

A minimal 'column' series config would therefore look like this:

series: [{ type: 'column', xKey: 'quarter', yKeys: ['iphone'] }]

In the snippet above we are using the 'iphone' as the only yKey, to show revenue per quarter for this product alone. Using this simple series config produces the following chart:

Stacked Columns

If the goal is to show the quarterly revenue for each product category, multiple yKeys can be used. To go from a regular column chart above to a stacked one below, all we do is add some more yKeys like so:

yKeys: ['iphone', 'mac', 'ipad', 'wearables', 'services']

And that simple change transforms our chart into this:

Note that in the example code we also added yNames along with yKeys which configure the display names to make sure we have nice looking tooltip headers and legend entries.

yNames: ['iPhone', 'Mac', 'iPad', 'Wearables', 'Services']

Grouped Columns

If we want to show quarterly revenue for each product category as grouped columns, we can simply take the stacked column config from the example above and set the grouped property of the series to true:

grouped: true

This will produce the following chart:

Normalized Columns

Going back to our stacked column example, if we wanted to normalize the totals so that each column's segments added up to a certain value, for example 100%, we could add the following to our series config:

normalizedTo: 100
It's possible to use any non-zero value to normalize to.

Column Labels

It's possible to add labels to columns, by adding the following to the series config:

label: {}

That's it. The config can be empty like that. However, you might want to customise your labels. For example, by default the values are rounded to two decimal places for the labels, but in the example below even that is too much, so we use a label formatter that simply returns the integer part of the number:

label: { formatter: function (params) { // if the data contains values that are not valid numbers, // the formatter's `value` will be `undefined` return params.value === undefined ? '' : params.value.toFixed(0); } }

The above formatter produces an attractive chart where the labels don't stick out of their columns:

It's best to avoid using labels with grouped columns (or bars), because columns in grouped mode tend to be narrow and often won't fit a label.

To learn more about label configuration please refer to the API reference below.

Bar Series

'bar' series configuration is exactly the same as 'column' series configuration and all the same modes (regular, stacked, grouped, normalized) apply to bars just as they do to columns.

To create a bar chart all you need to do is use type: 'bar' instead of type: 'column' in the series config and swap the axes — the 'category' axis moves from the bottom to the left of a chart, and the 'number' axis takes its place instead, moving from the left to the bottom:

axes: [ { type: 'number', position: 'bottom' }, { type: 'category', position: 'left' } ]

With these simple changes we go from stacked columns to stacked bars:

API Reference

xKey
Required
The key to use to retrieve x-values from the data.
xNameA human-readable description of the x-values.
yKeys
Required
The keys to use to retrieve y-values from the data.
yNamesHuman-readable descriptions of the y-values.
data
Required
The data to use when rendering the series. If this is not supplied, data must be set on the chart instead.
visibleWhether or not to display the series.
Default: true
showInLegendWhether or not to include the series in the legend.
Default: true
tooltipEnabledWhether or not to show tooltips when the series are hovered over.
Default: true
tooltipRendererFunction used to create the content for tooltips.function(params: IParams): string; interface IParams { datum: any; title?: string; color?: string; xKey: string; xName?: string; yKey: string; yName?: string; }
groupedWhether to show different y-values as separate bars (grouped) or not (stacked).
Default: false
normalizedToThe number to normalise the bar stacks to. Has no effect when grouped is true. For example, if normalizedTo is set to 100, the bar stacks will all be scaled proportionally so that each of their totals is 100.
fillsThe colours to cycle through for the fills of the bars.
Default: ['#f3622d', '#fba71b', '#57b757', '#41a9c9', '#4258c9', '#9a42c8', '#c84164', '#888888']
fillOpacityThe opacity of the fill for the bars.
Default: 1
strokesThe colours to cycle through for the strokes of the bars.
Default: ['#aa4520', '#b07513', '#3d803d', '#2d768d', '#2e3e8d', '#6c2e8c', '#8c2d46', '#5f5f5f']
strokeOpacityThe opacity of the stroke for the bars.
Default: 1
strokeWidthThe width in pixels of the stroke for the bars.
Default: 1
highlightStyleConfiguration for the highlighting used when the bars are hovered over. See highlightStyle for more details about this configuration object.
shadowConfiguration for the shadow used behind the chart series. See shadow for more details about this configuration object.
labelConfiguration for the labels shown on bars. See label for more details about this configuration object.

highlightStyle

Configuration for the highlighting used when the bars are hovered over.

fillThe fill colour of the bars when hovered over.
Default: 'yellow'
strokeThe colour of the stroke around the bars when hovered over.

shadow

Configuration for the shadow used behind the chart series.

enabledWhether or not the shadow is visible.
Default: true
colorThe colour of the shadow.
Default: 'rgba(0, 0, 0, 0.5)'
xOffsetThe horizontal offset in pixels for the shadow.
Default: 0
yOffsetThe vertical offset in pixels for the shadow.
Default: 0
blurThe radius of the shadow's blur, given in pixels.
Default: 5

label

Configuration for the labels shown on bars.

enabledWhether or not the labels should be shown.
Default: true
colorThe colour to use for the labels.
Default: 'rgba(70, 70, 70, 1)'
fontStyleThe font style to use for the labels.
Default: 'normal'
Options: 'normal' | 'italic' | 'oblique'
fontWeightThe font weight to use for the labels.
Default: 'normal'
Options: 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'
fontSizeThe font size in pixels to use for the labels.
Default: 12
fontFamilyThe font family to use for the labels.
Default: 'Verdana, sans-serif'

Next Up

Continue to the next section to learn about area series.