chartjs-plugin-trendline
v3.2.0
Published
Trendline for Chart.js
Downloads
128,714
Readme
chartjs-plugin-trendline
This plugin draws linear and exponential trendlines in your Chart. It has been tested with Chart.js version 4.4.9.
📊 View Live Examples
See the plugin in action with interactive examples for different chart types.
Installation
Note: Version 3.2.0+ supports ES modules (ESM) for modern bundlers like Vite, SvelteKit, and Next.js. See MIGRATION.md for upgrade details.
Modern Bundlers (Vite, SvelteKit, Next.js, webpack 5+)
Install via npm:
npm i chart.js chartjs-plugin-trendlineImport and register with Chart.js:
import { Chart } from 'chart.js';
import ChartJSTrendline from 'chartjs-plugin-trendline';
Chart.register(ChartJSTrendline);Node.js (CommonJS)
const { Chart } = require('chart.js');
const ChartJSTrendline = require('chartjs-plugin-trendline');
Chart.register(ChartJSTrendline);Browser (CDN)
Load Chart.js first, then the plugin which will automatically register itself:
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chart.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-trendline/dist/chartjs-plugin-trendline.min.js"></script>The plugin is now available globally as ChartJSTrendline and auto-registers with Chart.js.
Configuration
To configure the trendline plugin you simply add a new config options to your dataset in your chart config.
Linear Trendlines
For linear trendlines (straight lines), use the trendlineLinear configuration:
{
trendlineLinear: {
colorMin: Color,
colorMax: Color,
lineStyle: string, // "dotted" | "solid" | "dashed" | "dashdot"
width: number,
xAxisKey: string, // optional
yAxisKey: string, // optional
projection: boolean, // optional
trendoffset: number, // optional, if > 0 skips first n elements, if < 0 uses last n elements
// optional
label: {
color: Color,
text: string,
display: boolean,
displayValue: boolean, // shows slope value
offset: number,
percentage: boolean,
font: {
family: string,
size: number,
}
},
// optional
legend: {
text: string,
strokeStyle: Color,
fillStyle: Color,
lineCap: string,
lineDash: number[],
lineWidth: number,
}
}
}Exponential Trendlines
For exponential trendlines (curves of the form y = a × e^(b×x)), use the trendlineExponential configuration:
{
trendlineExponential: {
colorMin: Color,
colorMax: Color,
lineStyle: string, // "dotted" | "solid" | "dashed" | "dashdot"
width: number,
xAxisKey: string, // optional
yAxisKey: string, // optional
projection: boolean, // optional
trendoffset: number, // optional, if > 0 skips first n elements, if < 0 uses last n elements
// optional
label: {
color: Color,
text: string,
display: boolean,
displayValue: boolean, // shows exponential parameters (a, b)
offset: number,
font: {
family: string,
size: number,
}
},
// optional
legend: {
text: string,
strokeStyle: Color,
fillStyle: Color,
lineCap: string,
lineDash: number[],
lineWidth: number,
}
}
}Note: Exponential trendlines work best with positive y-values. The equation fitted is y = a × e^(b×x), where:
ais the coefficient (scaling factor)bis the growth rate (positive for growth, negative for decay)
Examples
- Linear Trendline Example
- Exponential Trendline Example
- Bar Chart with Trendline
- Scatter Chart with Trendline
Supported chart types
- bar
- line
- scatter
Both linear and exponential trendlines are supported for all chart types.
Contributing
Pull requests and issues are always welcome. For bugs and feature requests, please create an issue.
License
chartjs-plugin-trendline.js is available under the MIT license.
