Chart.JS: How to make sharp lines to smooth curved lines

Viewed 5895

Hi I'm new at charts and this is my chartjs chart, it's working currently, but it's showing in sharp lines and I want to make it smooth curve lines on this chart. Any ideas?

function statistics(data) {
    if ($('#stats-currency').length > 0) {

        if (typeof(stats_currency) !== 'undefined') {
            stats_currency.destroy();
        }
        if (typeof(data) == 'undefined') {
            var currency = $('select[name="currency"]').val();
            $.get(admin_url + 'home/stats_currency/' + currency, function(response) {
                stats_currency = new Chart($('#stats-currency'), {
                    type: 'line',
                    data: response,
                    options: {
                        responsive:true,
                        scales: {
                            yAxes: [{
                              ticks: {
                                beginAtZero: true,
                            }
                        }]
                    },
                },
            });
            }, 'json');
        } else {
            stats_currency = new Chart($('#stats-currency'), {
                type: 'line',
                data: data,
                options: {
                    responsive: true,
                    scales: {
                        yAxes: [{
                          ticks: {
                            beginAtZero: true,
                        }
                    }]
                },
            },
        });
        }
2 Answers

This can be done through the option lineTension that needs to be defined on your dataset. Choose a value below 1.

datasets: [{
  ... 
  lineTension: 0.8
}]

By default, you should however already see curved smooth lines since accoring to Chart.js documentation, the default value is 0.4.

lineTension: Bezier curve tension of the line. Set to 0 to draw straight lines.

Please note that if the steppedLine value is set to anything other than false, lineTension will be ignored.

you can do it by adding tension value to your charts options

<canvas id="myChart"></canvas>

JS

const config = {
  type: 'line',   // your chart type
  data: data,   // pass here your data
  options: {
    elements: {
        line: {
            tension : 0.4  // smooth lines
        },
    },
  },
};

// pass it like
  const myChart = new Chart(
    document.getElementById('myChart'),
    config
  );
Related