Chart Types Waterfall Charts - wrathtafarian/js-charts GitHub Wiki

๐ŸŒŠ Waterfall Charts

A waterfall chart is a data visualization that helps illustrate how an initial value changes through a series of additions and subtractions to reach a final value. Each column represents a step in the process, with increases shown in one color and decreases in another. The chart is commonly used in financial analysis, budgeting, and performance tracking to break down changes in revenue, profit, or costs over time.

  • Usage: ๐Ÿงต Pattern ๐ŸŒก๏ธ Range
  • Types:
    • Waterfall bar chart renders a waterfall chart using horizontal bars.
    • Waterfall column chart renders a waterfall chart using vertical columns.

Unlike traditional bar charts, waterfall charts highlight incremental changes rather than absolute values, making it easier to analyze contributions to a total. They are particularly useful for understanding profit and loss statements, cash flow analysis, and operational performance by visually showing where gains and losses occur within a process.

๐Ÿ’ก See the js-chart-examples repo for many detailed examples of how to use and customize (style) different types of waterfall charts.

Example Waterfall Chart

image

Example Waterfall Chart

image

Example Waterfall Chart

image

โš ๏ธ Required Files

Waterfall Bar Charts and Waterfall Column Charts require the following files to render correctly.

Filename Purpose
js/js-chart-common.js JavaScript source code file containing config and common functions.
js/js-chart-waterfall.js JavaScript source code file containing functions specific to waterfall charts.
css/js-chart-common.css Cascading Style Sheet file containing common styling.
css/js-chart-waterfall.css Cascading Style Sheet file containing styling specific to waterfall charts.

โš™๏ธ Chart Attributes

Waterfall charts accept the following chart attributes.

๐Ÿงฑ class | ๐Ÿ—‚๏ธ type | ๐Ÿ•’ version | ๐Ÿ“‹ template | โ†”๏ธ width | โ†•๏ธ height | ๐Ÿ“„ title | ๐Ÿ“„ ytitle | ๐Ÿ“„ xtitle | ๐Ÿ“ scalemin | ๐Ÿ“ scalemax | ๐Ÿ”ฒ showborder | ๐Ÿท๏ธ showlabels | ๐Ÿ“˜ showlegend | ๐ŸŽฎ showcontrols | ๐Ÿ—‚๏ธ showdatatable | #๏ธโƒฃ showgridlines | โž– showzeroline | ๐Ÿ“ฒ showwidget

๐Ÿงฑ Input Data

Category: ๐Ÿท๏ธ js-labels

The js-labels input container sets the labels that anchors each cluster on the axis (e.g., different months, regions, or items).

The container accepts a comma-separated list of text values.

<div class="js-labels">label-0, label-1, label-2, ..., label-n</div>

The example below sets the category labels on a chart to the months of the year.

<div class="js-labels">Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec</div>

Data Series: ๐Ÿ“‹ js-values

The js-values input container sets the individual data series (or data sets) on a chart.

The container accept a comma-separated list of numeric values.

<div class="js-values">10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120</div>

The js-values input container accepts a title attribute that is used to set a name or short description for the data series (or data set).

<div class="js-values" title="Sales revenue 2024">10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120</div>

โ„น๏ธ A title will automatically be assigned to each data series (or data set) if no title attribute is assigned to the js-values container.

Clustered data series (or multiple data series) can be set by specifying multiple js-values input containers. Each container represents a single data series (or data set).

<div class="js-values" title="Sales revenue 2024">20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130</div>
<div class="js-values" title="Sales revenue 2023">15, 25, 35, 45, 55, 65 75, 85, 95, 105, 115, 125</div>
<div class="js-values" title="Sales revenue 2022">10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120</div>

๐Ÿ–Œ๏ธ Style Directives

Every chart is customized (or styled) using one of the supported style templates.

Style directives are used to override the customization applied by the style template to each chart.

Waterfall charts support the following style directives.

๐Ÿ–ผ๏ธ js-canvas-* | ๐Ÿ“Š js-chart-* | ๐ŸŽจ js-color-* | ๐Ÿ–ฑ๏ธ js-control-button-* | ๐Ÿท๏ธ js-datalabel-* | ๐Ÿ—‚๏ธ js-datatable-* | ๐Ÿฆถ js-footer-* | #๏ธโƒฃ js-grid-line-* | ๐Ÿ“˜ js-legend-* | ๐ŸŽฎ js-options-menu-* | ๐Ÿ“ js-scale-* | ๐Ÿ“„ js-title-* | ๐Ÿงฑ js-value-bar-* | โž– js-zero-line-*

๐Ÿ’ก See the ๐Ÿ‘€ js-chart-examples repo for many detailed examples of how to use the style directives to customize a chart.

๐Ÿ‘€ Examples

๐Ÿ’ก See the js-chart-examples repo for many detailed examples of how to use different types of waterfall charts.

Example: Waterfall Chart: Income and expenses - Q3

The example below renders a waterfall chart, showing Income and expenses - Q3 of a fictional company.

<div class="js-chart" type="waterfall bar" width="700px" title="Income and expenses - Q3" xtitle="Movement" ytitle="Euro" showlegend="off" showgridlines="yes" showzeroline="yes" showdatatable="no">
    <div class="js-labels">Opening balance, Rent, Repairs, Insurance, Payment invoice #455, Stationary</div>
    <div class="js-values" title="Q3 Income and Expenses">15766, -9321, -5214, -4520, 2345, -1756</div>

    <div class="js-value-bar-min-width">2px</div>
    <div class="js-value-bar-series-margin">5px</div>
</div>

Explained

Category: ๐Ÿท๏ธ js-labels

The js-labels input container sets the labels that anchor each cluster on the axis. In this example, each cluster represents one quarter in the year.

Data Series: ๐Ÿ“‹ js-values

There are three js-values input containers. Each container represents one data series (or data set) on the chart. In the example, each container represents one product line.

Customization: ๐Ÿ–Œ๏ธ Style Directives
  • The js-value-bar-min-width style directive ensures that all cells on the chart are not rendered below 2px in height.
  • The js-value-bar-series-margin style directive creates a 5px gap between the bars on the chart.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ