Line, bar and pie charts
Updated 5 years ago to v13.0.0 by Flourish team
How to use this template
How to get started
Upload data with one column containing “labels” (category names, years, etc) and one or more numerical columns of “values” (each of which becomes a line on a line chart, a series of bars on a bar chart, etc). Here's what your data might look like.
Year | London | Paris | Berlin |
2010 | 1 | 4 | 3 |
2020 | 0 | 3 | 6 |
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.
FAQ
How do I change the colour of some of the bars, but not all of them? First, make sure you’re using a “bar” or "column" chart. Then, under "Chart styles", choose "Shade by row". Finally, specify the colours you want for each row under "Custom colours". (If you'd like to have all the bars the same colour except for one or two, a shortcut is first to customise the palette so that there's only one colour.)
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: @flourish/line-bar-pie
version: 13
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: "@flourish/line-bar-pie", version: "13", bindings: { data: { label: 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: "@flourish/line-bar-pie", version: "13", bindings: { data: { label: 0, // index of a column in your data value: [1, 2, ...], // index(es) of column(s) in your data facet: 3, // index of a column in your data metadata: [4, 5, ...], // index(es) of column(s) 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: "@flourish/line-bar-pie", version: "13", bindings: { data: { label: "DataHeader1", } }, data: { data: [ { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, { "DataHeader1": ..., "DataHeader2": ..., ... }, ... ] } }
All possible bindings that you can supply are shown in this example:
{ template: "@flourish/line-bar-pie", version: "13", bindings: { data: { label: "DataHeader1", value: ["DataHeader2", "DataHeader3", ...], facet: "DataHeader4", metadata: ["DataHeader5", "DataHeader6", ...], } }, 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: "@flourish/line-bar-pie", version: "13", data: { data: [ { label: ..., value: [...], metadata: [...] }, ... ] }, ... }
And the full list of all possible properties is as follows:
{ template: "@flourish/line-bar-pie", version: "13", data: { data: [ { label: ..., value: [...], facet: ..., metadata: [...] }, ... ] }, ... }
Meanings of the template data keys:
- data.label: A column of names or times
- data.value: 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.
- data.metadata: One or more columns of information to include in custom popups
Template settings
Options for opts.state
.
Chart type
chart_type string
Allowed values:
- line (Line chart)
- area_stacked (Area chart (stacked))
- area_prop (Area chart (stacked %))
- area (Area chart (unstacked))
- column_grouped (Column chart (grouped))
- column_stacked (Column chart (stacked))
- column_stacked_prop (Column chart (stacked %))
- bar_grouped (Bar chart (grouped))
- bar_stacked (Bar chart (stacked))
- bar_stacked_prop (Bar chart (stacked %))
- donut (Pie chart)
- column_grouped_line (Dual axis: Lines & columns (grouped))
- column_stacked_line (Dual axis: Lines & columns (stacked))
- column_stacked_prop_line (Dual axis: Lines & columns (stacked %))
- line_line (Dual axis: Lines & lines)
secondary_series number
Number of series to show on right axis. Sets how many of your specified value columns are treated as lines. Counts from the start, so if you want, say, column B as a column and A as a line, set the order in the column settings to "B,A".
facet_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:
height_mode string
Height mode. In “Fill space” mode the graphic will fill the container (which by default will be the the standard Flourish responsive chart size). In “Aspect ratio” mode you set the aspect ratio of the plot and the container will be updated to acommodate it (not supported when embedded in a simple fixed-height iframe). "Auto" uses fill space but switches to "Aspect ratio" if there are too many charts for the space. Allowed values:
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. Min: 1
facet_gutter_w number
Horizontal.
facet_gutter_h number
Vertical.
facet_header_font_size number
Size. In rems (multiple of base font size)
facet_title_align string
Alignment. Allowed values:
facet_header_color_mode string
Colour mode. Allowed values:
facet_header_color color
Colour.
facet_header_bg string
Background. Allowed values:
facet_header_bg_mode string
Colour mode. Allowed values:
facet_header_bg_color color
Colour.
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.
color_mode string
Colour mode. Allowed values:
color.palette colors
Palette.
color.extend boolean
Auto-extend. Automatically generate additional colours when needed to avoid the palette colours being used more than once. Added colours are based on the average lightness and chroma values of the palette. This works best if the palette’s colours do not have very high or low saturation.
color.advanced boolean
Fine tune. Fine tune how additional colours are added to the palette.
color.hue_rotation_angle number
Hue rotation for added colours. Angle, in degrees in HCL colourspace, between one generated colour and the next. The default value, ~360/(Golden ratio), ensures adjacent hues are not too similar. Max: 360
color.custom_palette text
Custom overrides. Type the name of the entity whose colour you want to set, a colon and then a colour (using a name, hex-code or rgb declaration). Multiple colours can be set using multiple lines. For example:
Party 1: red
Party 2: #4455AA
Party 3: rgb(30,168,26)
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_outer number
Space at edges. As a % of the width of a whole bar stack or group Max: 100
column_padding_inner number
Space between bar stacks or groups. As a % of the width of a whole bar stack or group Max: 100
column_padding_in_group number
Space between bars in groups. As a % of the width of a single bar in the group. Ignored if only a single series is selected. 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
legend_position string
Legend position. Allowed values:
legend_text_color color
Text.
legend_swatch_height number
Swatch height. in rems
legend_swatch_width number
Swatch width. in rems
legend_swatch_radius number
Swatch radius.
legend_text_size number
Text size. in rems
legend_stack boolean
One colour per line. Arrange legend vertically, with one colour per line
text_legend string
Allowed values:
- auto (Auto)
- custom (Custom)
- off (Off)
text_legend_title boolean
Title.
text_legend_subtitle boolean
Subtitle.
text_legend_bold boolean
Bold. If checked, always use bold for coloured items
Series filtering
series_filter_enabled boolean
Show series filter.
series_filter_text string
Placeholder text.
series_filter_none_text string
No more results text.
max_series number
Max number of series to show.
Data labels
labels boolean
Show labels on each data point.
labels_dot_center boolean
Position labels on center of dot.
label_bar_align string
Allowed values:
- left (fa-align-left)
- center (fa-align-center)
- right (fa-align-right)
labels_color_mode string
Text colour. Allowed values:
labels_fixed_color color
Colour.
labels_responsive boolean
Mode. Allowed values:
labels_font_size_min number
Min.
labels_font_size_max number
Max.
labels_font_size number
Text size.
labels_bg_mode string
Background. Adds a background to the text, matching the background colour of the chart Allowed values:
labels_bg_size number
Size. Size of the background, as % of text size Max: 100
labels_show_value string
Show value. Allowed values:
labels_show_label string
Show label. Allowed values:
X axis
x_axis_label string
X label.
x_axis_label_font_size number
Text size. Min: 1
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_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.
x_axis_tick_mode string
Mode. Allowed values:
x_axis_tick_count 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_custom text
One tick label per line. Specify the ticks to show, one per line
Y axis
y_axis_label string
Y label.
y_axis_label_font_size number
Text size. Min: 1
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_bar_label_position string
Allowed values:
- left (Left)
- above (Above bars)
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.
y_axis_tick_mode string
Mode. Allowed values:
y_axis_tick_count 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_custom text
One tick label per line. Specify the ticks to show, one per line
Y axis (right)
y_secondary_axis_label string
Y label.
y_secondary_axis_label_font_size number
Text size. Min: 1
y_secondary_axis_tick_w number
Width. Horizontal size of the axis in pixels (excludes label)
y_secondary_axis_min number
Y min.
y_secondary_axis_max number
Y max.
y_secondary_axis_log boolean
Log scale.
y_secondary_axis_matching boolean
Matching y axis across grid of charts.
y_secondary_axis_last_col_only boolean
Only show Y axis on last column of grid.
y_secondary_axis_tick_style string
Allowed values:
- ticks (Ticks)
- gridlines (Gridlines)
- none (None)
y_secondary_axis_tick_dashed number
Dashes. Zero for a solid line, bigger numbers for bigger dashes
y_secondary_axis_tick_color color
Lines.
y_secondary_axis_color color
Labels.
y_secondary_axis_tick_font_size number
Text size.
y_secondary_axis_ticks_inline boolean
Labels above lines.
y_secondary_axis_tick_mode string
Mode. Allowed values:
y_secondary_axis_tick_count number
Number. Approximate number of tick marks or gridlines. The actual number will depend on the range of values, chart size, etc.
y_secondary_axis_tick_custom text
One tick label per line. Specify the ticks to show, one per line
Number and date formatting
label_data_type string
Data type. Allowed values:
datetime_input_format string
Format in data sheet. The date/time format in the data sheet. Leave as “Auto” for Flourish to make a best guess. If it isn’t in the list, you can enter a custom format using d3-time-format syntax. See npmjs.com/package/d3-time-format for details. Predefined values:
x_axis_date_format string
Display format. The date/time format to show in the graphic. If it isn’t in the list, you can enter a custom format using d3-time-format syntax. See npmjs.com/package/d3-time-format for details. Predefined values:
localization.input_decimal_separator string
Decimal separator in data sheet. Used for interpreting your data. Only change if data is not displaying on the chart as expected. Allowed values:
localization.output_separators string
Number format to display. How the numbers should appear on chart labels Allowed values:
number_format.prefix string
Prefix. Text to place in front of number
number_format.suffix string
Suffix. Text to place after number
number_format.n_dec number
Decimal places. Use negative integers to round to positive powers of ten (eg -2 rounds to the nearest 100) Min: -10 Max: 10
number_format.strip_zeros boolean
Remove trailing zeros.
number_format.strip_separator boolean
Hide thousands separator below 10,000. Turn off if you want four-digit numbers to include a separator, e.g. “1,234” rather than “1234”.
number_format.transform_labels boolean
Multiply/divide values.
number_format.transform string
Allowed values:
- multiply (Multiply by)
- divide (Divide by)
- exponentiate (×10 to the power of)
number_format.multiply_divide_constant number
number_format.exponentiate_constant number
number_format_secondary.prefix string
Prefix. Text to place in front of number
number_format_secondary.suffix string
Suffix. Text to place after number
number_format_secondary.n_dec number
Decimal places. Use negative integers to round to positive powers of ten (eg -2 rounds to the nearest 100) Min: -10 Max: 10
number_format_secondary.strip_zeros boolean
Remove trailing zeros.
number_format_secondary.strip_separator boolean
Hide thousands separator below 10,000. Turn off if you want four-digit numbers to include a separator, e.g. “1,234” rather than “1234”.
number_format_secondary.transform_labels boolean
Multiply/divide values.
number_format_secondary.transform string
Allowed values:
- multiply (Multiply by)
- divide (Divide by)
- exponentiate (×10 to the power of)
number_format_secondary.multiply_divide_constant number
number_format_secondary.exponentiate_constant number
Popups
popup.show_popups boolean
Popups. Allowed values:
popup.is_custom boolean
Popup contents. Allowed values:
popup.custom_template text
Popup content. The text to appear in the popup. You can use {{column_name}} to add any value from your data sheet. It must be in a selected column, but you can add columns to “Metadata” if you just want to include them for use in the popup. Advanced users can include HTML to apply layouts, formatting, images, etc.
Note that in this template you can use {{VALUE}} to display the numerical value of the current data point, regardless of its column, or {{SERIES}} to display its column name.
popup.show_pointer boolean
Pointer.
popup.show_shadow boolean
Shadow.
popup.style_popups boolean
Custom styling.
popup.text_color color
Text colour.
popup.align string
Alignment. Allowed values:
popup.font_size number
Font size. Min: 1
popup.fill_color color
Fill colour.
popup.opacity number
Fill opacity. Max: 1
popup.padding number
Padding.
popup.border_radius number
Radius. Corner radius of popup
show_series_text boolean
Set series info in popups. Allows you to add information about each series/column (e.g. each line) to the popups
popup_series_text text
Popup content for series. Adds content to the popup about the series. Separate column name and text with a double colon. For example:
Series 1 :: Comment about Series 1
Series 2 :: Comment about series 2
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:
Animations
data_trans_duration number
Animation duration. The duration, in milliseconds, of transitions – for example between two slides in a story
animate_on_load boolean
Animate on load.
data_trans_bind_series boolean
Only animate series with same name. Determines how animations work when the data changes (e.g. between slides in a story). When this is on, series (e.g. lines) will attempt to animate to become another line only if they have the same name (i.e. the same column header).
data_trans_bind_data_points boolean
Only animate points with same label. Determines how animations work when the data changes (e.g. between slides in a story). When this is on, data points (e.g. dots or bars) will attempt to animate to become other data points if they have the same label (e.g. date or category).
Layout
layout.body_font font
Font.
layout.max_width number
Maximum width. Leave blank to stretch to container width Min: 50
layout.background_color_enabled boolean
Color. Allowed values:
layout.background_image_enabled boolean
Image. Allowed values:
layout.background_color color
Color.
layout.background_image_src url
Image URL.
layout.background_image_size string
Size. Allowed values:
layout.background_image_position string
Position. Allowed values:
layout.layout_order string
Layout order. Allowed values:
layout.space_between_sections string
Space between sections. Allowed values:
layout.space_between_sections_custom number
Custom. Max: 100
layout.margin_top number
Top.
layout.margin_right number
Right.
layout.margin_bottom number
Bottom.
layout.margin_left number
Left.
layout.border.enabled boolean
Show borders around visualisation.
layout.border.top.width number
Top.
layout.border.top.style string
Style. Allowed values:
layout.border.top.color color
Color.
layout.border.right.width number
Right.
layout.border.right.style string
Style. Allowed values:
layout.border.right.color color
Color.
layout.border.bottom.width number
Bottom.
layout.border.bottom.style string
Style. Allowed values:
layout.border.bottom.color color
Color.
layout.border.left.width number
Left.
layout.border.left.style string
Style. Allowed values:
layout.border.left.color color
Color.
Header
layout.header_align string
Alignment. Allowed values:
layout.title string
layout.title_styling boolean
Styling.
layout.title_size string
Size. Allowed values:
layout.title_size_custom number
Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3
layout.title_weight string
Weight. Allowed values:
layout.title_color color
Color.
layout.title_line_height number
Line height. Max: 3
layout.title_space_above string
Space above. Allowed values:
layout.title_space_above_custom number
Custom. Max: 100
layout.subtitle string
layout.subtitle_styling boolean
Styling.
layout.subtitle_size string
Size. Allowed values:
layout.subtitle_size_custom number
Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3
layout.subtitle_weight string
Weight. Allowed values:
layout.subtitle_color color
Color.
layout.subtitle_line_height number
Line height. Max: 3
layout.subtitle_space_above string
Space above. Allowed values:
layout.subtitle_space_above_custom number
Custom. Max: 100
layout.text string
layout.text_styling boolean
Styling.
layout.text_size string
Size. Allowed values:
layout.text_size_custom number
Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3
layout.text_weight string
Weight. Allowed values:
layout.text_color color
Color.
layout.text_line_height number
Line height. Max: 3
layout.text_space_above string
Space above. Allowed values:
layout.text_space_above_custom number
Custom. Max: 100
layout.header_border string
Allowed values:
- top (Top)
- bottom (Bottom)
- none (None)
layout.header_border_width number
Width.
layout.header_border_color color
Color.
layout.header_border_style string
Style. Allowed values:
layout.header_logo_enabled boolean
Allowed values:
- true (Enabled)
- false (Disabled)
layout.header_logo_src url
URL.
layout.header_logo_height number
Height.
layout.header_logo_align string
Align. Align logo inside header or outer visualisation container Allowed values:
layout.header_logo_position_inside string
Position. Allowed values:
layout.header_logo_position_outside string
Position. Allowed values:
layout.header_logo_margin_top number
Top.
layout.header_logo_margin_right number
Right.
layout.header_logo_margin_bottom number
Bottom.
layout.header_logo_margin_left number
Left.
Footer
layout.source_name string
Source name.
layout.source_url string
Source url.
layout.multiple_sources boolean
Multiple sources.
layout.source_name_2 string
Source name.
layout.source_url_2 string
Source url.
layout.source_name_3 string
Source name.
layout.source_url_3 string
Source url.
layout.source_label string
Source label.
layout.footer_note string
Note.
layout.footer_text_size number
Size.
layout.footer_text_color color
Color.
layout.footer_align string
Alignment. Allowed values:
layout.footer_logo_enabled boolean
Allowed values:
- true (Enabled)
- false (Disabled)
layout.footer_logo_src url
Image.
layout.footer_logo_link_url string
Link.
layout.footer_logo_height number
Height.
layout.footer_logo_margin number
Margin.
layout.footer_logo_order string
Position. Allowed values:
layout.footer_align_vertical string
V. align. Allowed values:
layout.footer_border string
Allowed values:
- top (Top)
- bottom (Bottom)
- none (None)
layout.footer_border_width number
Width.
layout.footer_border_color color
Color.
layout.footer_border_style string
Style. Allowed values: