# Linear Gradient ```js chart-editor // const actions = [ { name: 'Randomize', handler(chart) { chart.data.datasets.forEach(dataset => { dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100}); }); chart.update(); } }, { name: 'Add Data', handler(chart) { const data = chart.data; if (data.datasets.length > 0) { data.labels = Utils.months({count: data.labels.length + 1}); for (let index = 0; index < data.datasets.length; ++index) { data.datasets[index].data.push(Utils.rand(-100, 100)); } chart.update(); } } }, { name: 'Remove Data', handler(chart) { chart.data.labels.splice(-1, 1); // remove the label first chart.data.datasets.forEach(dataset => { dataset.data.pop(); }); chart.update(); } } ]; // // let width, height, gradient; function getGradient(ctx, chartArea) { const chartWidth = chartArea.right - chartArea.left; const chartHeight = chartArea.bottom - chartArea.top; if (!gradient || width !== chartWidth || height !== chartHeight) { // Create the gradient because this is either the first render // or the size of the chart has changed width = chartWidth; height = chartHeight; gradient = ctx.createLinearGradient(0, chartArea.bottom, 0, chartArea.top); gradient.addColorStop(0, Utils.CHART_COLORS.blue); gradient.addColorStop(0.5, Utils.CHART_COLORS.yellow); gradient.addColorStop(1, Utils.CHART_COLORS.red); } return gradient; } // // const DATA_COUNT = 7; const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100}; const labels = Utils.months({count: 7}); const data = { labels: labels, datasets: [ { label: 'Dataset 1', data: Utils.numbers(NUMBER_CFG), borderColor: function(context) { const chart = context.chart; const {ctx, chartArea} = chart; if (!chartArea) { // This case happens on initial chart load return; } return getGradient(ctx, chartArea); }, }, ] }; // // const config = { type: 'line', data: data, options: { responsive: true, plugins: { legend: { position: 'top', }, } }, }; // module.exports = { actions: actions, config: config, }; ``` ## Docs * [Colors](../../general/colors.md) * [Patterns and Gradients](../../general/colors.md#patterns-and-gradients) * [Data structures (`labels`)](../../general/data-structures.md) * [Options](../../general/options.md) * [Scriptable Options](../../general/options.md#scriptable-options) * [Line](../../charts/line.md)