Line, bar and pie charts
Updated 7 years ago by Template retirement home
How to use this template
The Swiss Army Knife of templates. Choose from line, bar, grouped bar, stacked bar, area or pie charts – and animate between them all.
Data requirements
You need one column of “Labels” (categories, times, numbers, etc) and one or more columns of “Values” (which must contain numbers). Each “Values” column creates a line on a line chart, a series of bars in a bar chart, or a pie chart.
Making a grid of charts
You can use the “Grid of charts” option to display each series in your data on its own mini chart – a visualisation technique called “small multiples”. Data can also be divided into mini charts by specifying a “Charts grid” column. In this case, there will be one chart for each unique value in the selected column. This is useful if your data is arranged in this way, or if you want to create a grid with multiple series on each chart.
Tips
- You can use custom colours by typing them as a comma-separated list in to the “Colour scheme or custom colours” menu. You can use any named CSS colour or hexcode.
- With a grid of line or bar charts, you can choose whether to have the same y axis for all the charts (good for comparing absolute numbers) or to have each chart set its own y-axis based on the data it contains (best for comparing the shape of each series).
- If you make different views of your data and save them as separate visualisations, you can animate between the charts in the Flourish story editor.
API information
This section documents API usage specific to this template, so for an introduction we suggest you refer to the generic API documentation instead.
template: _291
version: _4
Template data
There are three different formats in which you can supply data to this template. The most convenient for you to use likely depends on the source of your data, as described below.
1. Array of arrays, and a bindings object
You can supply arrays of arrays to opts.data
, which might look
like:
{ data: { data: [ [ "DataColumn1Value1", "DataColumn2Value1", [ "DataColumn1Value2", "DataColumn2Value2", [ "DataColumn1Value3", "DataColumn2Value3", ... ] } }
where each array of arrays represents the rows in a data sheet.
To tell the API how the values from each column should be
associated with the keys that the template is expecting, you must also supply
an object attached to opts.bindings
. (The meanings of the
keys in the bindings object are documented
below.) The minimal bindings you can
supply for this template are as shown in this example:
{ template: "_291", version: "_4", bindings: { data: { x: 0, // index of a column in your data } }, data: { data: [ [ "DataColumn1Value1", "DataColumn2Value1", [ "DataColumn1Value2", "DataColumn2Value2", [ "DataColumn1Value3", "DataColumn2Value3", ... ] } }
All possible bindings that you can supply are shown in this example:
{ template: "_291", version: "_4", bindings: { data: { x: 0, // index of a column in your data y: [1, 2, ...], // index(es) of column(s) in your data facet: 3, // index of a column in your data } }, data: { data: [ [ "DataColumn1Value1", "DataColumn2Value1", [ "DataColumn1Value2", "DataColumn2Value2", [ "DataColumn1Value3", "DataColumn2Value3", ... ] } }
2. Array of objects with arbitrary keys, and a bindings object
This format is most likely useful when you have data from an external source,
such as CSV data loaded from d3-dsv.
You should supply this attached to the opts.data
, which might look
like:
{ data: [ { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, ... ] }
... but with the keys being the column headers from your
source data instead. You must also supply an object attached to
opts.bindings
. The minimal bindings you can
supply for this template are as shown in this example:
{ template: "_291", version: "_4", bindings: { data: { x: "DataHeader1", } }, data: { data: [ { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, ... ] } }
All possible bindings that you can supply are shown in this example:
{ template: "_291", version: "_4", bindings: { data: { x: "DataHeader1", y: ["DataHeader2", "DataHeader3", ...], facet: "DataHeader4", } }, data: { data: [ { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, ... ] } }
(As before, the keys containing "Header" would be replaced by column names from your data source.)
3. Array of objects with template-defined keys
There is an alternative format you can use, which is likely to be easier to
use if your data is not from a spreadsheet source. With this alternative format
you supply your data to the template as
an array of objects, attached to opts.data
, where the keys must
be those used by the template, as documented below. In this case
there is no need to supply a bindings object, since the key names are already
those expected by the template. The required properties in the data
object are as follows (scroll down for a
description of what each property is):
{ template: "_291", version: "_4", data: { data: [ { x: ..., y: [...] }, ... ] }, ... }
And the full list of all possible properties is as follows:
{ template: "_291", version: "_4", data: { data: [ { x: ..., y: [...], facet: ... }, ... ] }, ... }
Meanings of the template data keys:
- data.x: A column of names or times
- data.y: One or more columns of numbers
- data.facet: If specified and “Grid of charts” view is on, creates a separate mini chart for each value found in the column.
Template settings
Options for opts.state
.
Chart type
chart_type string
Allowed values:
- line (Line chart)
- area (Area chart)
- area_prop (Area chart (stacked %))
- column_grouped (Bar chart (grouped))
- column_stacked (Bar chart (stacked))
- column_stacked_prop (Bar chart (stacked %))
- donut (Pie chart)
layout string
Grid mode. “Grid of charts” creates a mini chart for each series (or each value in your ”Charts grid” column, if specified) Allowed values:
Layout
facet_aspect number
Chart height, % of width.
facet_fixed_cols boolean
Fixed number of columns in grid.
facet_min_w number
Min chart width. Determines how many columns of charts there should be in the grid. Ignored if you specify a fixed number of columns.
facet_cols number
Number of columns in grid. Leave blank for automatic layout Min: 1
facet_gutter_w number
Horizontal.
facet_gutter_h number
Vertical.
margin_top number
Top.
margin_right number
Right.
margin_bottom number
Bottom.
margin_left number
Left.
Chart styles
bg_color_style string
Background colour. Allowed values:
bg_color color
Colour.
palette string
Colour scheme or custom colours. Choose from the list or enter a custom palette as a comma-separated list of colour codes or names (e.g. red, #343434) Predefined values:
line_width number
Width.
line_opacity number
Opacity. Max: 1
line_curve string
Line curve. Allowed values:
line_end_labels boolean
Line labels.
line_end_labels_width number
Line label width. The margin added to the right of each chart for the line labels
area_opacity number
Opacity. Max: 1
dot_opacity number
Opacity. Max: 1
dot_radius number
Radius. Max: 25
dot_radius_last number
Final radius. Scales the final dot in the series. Useful for highlighting the final point on a line chart. Leave blank to have the last dot the same size as the others.
column_padding_inner number
Space between bars. As a % of the width of a whole bar (or bar group) Max: 100
column_padding_outer number
Space at edges. As a % of the width of a whole bar (or bar group) Max: 100
column_opacity number
Bar opacity. Min: 0.1 Max: 1
donut_inner_radius number
Doughnut hole (%). Max: 99
donut_corner_radius number
Corner curve (pixels).
donut_pad_angle number
Segment padding (degrees). Max: 10
donut_auto_scale boolean
Scale pies based on data. Scale each pie chart in the grid so that the area of each segment reflect its value
legend_show boolean
Show legend. Ignored in grid mode if colouring by chart
Title and subtitle
title string
Title.
subtitle string
Subtitle.
title_padding number
Margin (pixels).
title_color color
Colour.
X axis
x_axis_label string
X label.
x_axis_tick_h number
Height. Vertical size of the axis in pixels (excludes label)
x_axis_min number
X min. Ignored if axis is showing categories rather than numbers
x_axis_max number
X max. Ignored if axis is showing categories rather than numbers
x_axis_last_row_only boolean
Only show X axis on last grid row.
x_axis_tick_style string
Allowed values:
- ticks (Ticks)
- gridlines (Gridlines)
- none (None)
x_axis_num_ticks number
Number. Approximate number of tick marks or gridlines. The actual number will depend on the range of values, chart size, etc.
x_axis_tick_dashed number
Dashes. Zero for a solid line, bigger numbers for bigger dashes
x_axis_tick_color color
Lines.
x_axis_color color
Labels.
x_axis_tick_angle string
Text angle. Allowed values:
x_axis_tick_font_size number
Text size.
x_axis_ticks_inline boolean
Labels on gridlines.
Y axis
y_axis_label string
Y label.
y_axis_tick_w number
Width. Horizontal size of the axis in pixels (excludes label)
y_axis_min number
Y min.
y_axis_max number
Y max.
y_axis_log boolean
Log scale.
y_axis_matching boolean
Matching y axis across grid of charts.
y_axis_first_col_only boolean
Only show Y axis on first column of grid.
y_axis_tick_style string
Allowed values:
- ticks (Ticks)
- gridlines (Gridlines)
- none (None)
y_axis_num_ticks number
Number. Approximate number of tick marks or gridlines. The actual number will depend on the range of values, chart size, etc.
y_axis_tick_dashed number
Dashes. Zero for a solid line, bigger numbers for bigger dashes
y_axis_tick_color color
Lines.
y_axis_color color
Labels.
y_axis_tick_font_size number
Text size.
y_axis_ticks_inline boolean
Labels above lines.
Popups
show_popups boolean
Show popups.
popup_font_size number
Font size.
Annotations
anno_x_enabled boolean
Show highlights on the x axis.
anno_x_lines text
One per line, in format “Thing :: 2012”.
anno_x_line_color color
Color.
anno_x_line_width number
Width.
anno_x_line_dash number
Dash.
anno_x_areas text
One per line, in format “Thing :: 2013 >> 2015”.
anno_x_fill_color color
Area.
anno_x_label_color color
Text.
anno_x_fill_opacity number
Area opacity.
anno_x_label_align string
Labels. Allowed values:
anno_x_stack string
Above or below data. Allowed values:
anno_y_enabled boolean
Show highlights on the y axis.
anno_y_lines text
One per line, in format “Thing :: 5000”.
anno_y_line_color color
Color.
anno_y_line_width number
Width.
anno_y_line_dash number
Dash.
anno_y_areas text
One per line, in format “Thing :: 2000 >> 8000”.
anno_y_fill_color color
Area.
anno_y_label_color color
Text.
anno_y_fill_opacity number
Area opacity.
anno_y_label_align string
Labels. Allowed values:
anno_y_stack string
Above or below data. Allowed values:
Number formatting
decimal_separator_in_data string
Decimal separator in data sheet. Used for interpretting your data. Only change if data is not displaying on the chart as expected. Allowed values:
decimal_separator string
Number format to display. How the numbers should appear in the chart – e.g. on the axes and popups Allowed values:
number_prefix string
Number prefix.
decimals number
Decimal places. The maximum number of decimal places to show
number_suffix string
Number suffix.
Animations
data_trans_duration number
Animation duration. The duration, in milliseconds, of transitions – for example between two slides in a story