score:0

Accepted answer

ok, i figured it out. basically, i'm adding padding in beforeinit and then add description in beforedraw (only the essence here):

beforeinit: function (chart, options) {
    let ispieordoughnut = chart.config.type === 'pie' || chart.config.type === 'doughnut';
    if (ispieordoughnut) {
        chart.options.scales.xaxes[0].gridlines.linewidth = 0;
        chart.options.scales.xaxes[0].display = true;
    }

    chart.options.scales.xaxes[0].scalelabel.padding.bottom = 50;
},
beforedraw: function (chart, options) {
    ctx = chart.chart.ctx;
    ctx.restore();
    ctx.font = "1em sans-serif";
    let height = chart.chart.height;
    ctx.filltext('description', 30, height - 35);
    ctx.save();
}

Related Query

More Query from same tag