chartjs-plugin-labels icon indicating copy to clipboard operation
chartjs-plugin-labels copied to clipboard

please support chart type bar, horizontal bar and polar, thanks

Open adamshe opened this issue 7 years ago • 11 comments

it will be nice to support bar, horizontalBar, polarArea.

adamshe avatar Oct 18 '17 01:10 adamshe

If this apply to bar chart, I think it can only apply to stacked. looks polarArea can apply this. I will try polarArea first.

emn178 avatar Oct 25 '17 11:10 emn178

v0.15.0 supports polar area now. please try it.

emn178 avatar Aug 18 '18 13:08 emn178

v1.1.0 supports bar chart now. please try it.

emn178 avatar Sep 24 '18 09:09 emn178

Any chance of this supporting horizontal bars soon? Thanks

designed2use avatar Oct 04 '18 13:10 designed2use

@designed2use I create a fork with horizontal bar support and @emn178 I add also pull request for this changes. If you need something more with support for horizontal bar tell me about It - I can develop this subject.

qubiack avatar Nov 24 '18 19:11 qubiack

If this plugin would support horizontal bar charts as well. I could drop 'chartjs-plugin-datalabels' from my project.

RopoMen avatar Feb 15 '19 10:02 RopoMen

Please support the plugin for horizontal bar charts. That would be very nice

DenjanD avatar Aug 20 '19 01:08 DenjanD

I'd love to have the support for horizontalBar too. That would be awesome !

JeSuisUnCaillou avatar Nov 12 '19 08:11 JeSuisUnCaillou

Yeah, I agree. horizontalBar support would be awesome.

princessellen avatar Feb 21 '20 09:02 princessellen

Try to add: var config = { type: 'horizontalBar', data: barChartData, options: { elements: { rectangle: { borderWidth: 2, } }, responsive: true, legend: { position: 'bottom', }, title: { display: true, text: Titulo }, scales: { xAxes: [{ display: false, ticks: { beginAtZero: true } }] }, animation: { duration: 1000, onComplete() { let chartInstance = this.chart; let ctx = chartInstance.ctx; // ctx.fillStyle = this.scale.textColor ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillStyle = '#fff'; this.data.datasets.forEach(function (dataset, i) { var label = dataset.label; var meta = chartInstance.controller.getDatasetMeta(i); meta.data.forEach(function (bar, index) { var data = dataset.data[index]; if (label.indexOf('%') >= 0) data += "%"; ctx.fillText(data, bar._model.x - 15, bar._model.y); }); }); } } }

};

etacla avatar Mar 11 '20 12:03 etacla

Just wanna share my code, this is modified version of @etacla code, many thanks to him

// bar chart
var barOptions = {
    tooltips: {
        backgroundColor: "rgb(255,255,255)",
        bodyFontColor: "#858796",
        titleMarginBottom: 10,
        titleFontColor: '#6e707e',
        titleFontSize: 14,
        borderColor: '#dddfeb',
        borderWidth: 1,
        xPadding: 15,
        yPadding: 15,
        displayColors: false,
        caretPadding: 10,
        callbacks: {
            label: function(tooltipItem, chart) {
                return tooltipItem.yLabel + ': ' + tooltipItem.xLabel + ' User';
            }
        }
    },
    plugins: {
        labels: {
            render: 'percentage'
        }
    },
    animation: {
        duration: 1000,
        onProgress() { <======================== code that render label on bar chart ======
            let chartInstance = this.chart;
            let ctx = chartInstance.ctx;

            // ctx.fillStyle = this.scale.textColor

            ctx.textAlign = "center";
            ctx.textBaseline = "middle";
            ctx.fillStyle = '#fff';

            this.data.datasets.forEach(function (dataset, i) {
                var label = dataset.label;
                var meta = chartInstance.controller.getDatasetMeta(i);
                var total = dataset.data.reduce(function(total, num) { return total + num; })

                meta.data.forEach(function (bar, index) {
                    var data = dataset.data[index] / total * 100;
                    data = Math.ceil(data) + '%';
                    ctx.fillText(data, bar._model.x - 15, bar._model.y);
                });
            });
        }
    }
};

var research = $('#research-chart');
var researchData = {
        labels: ['Biocontrol', 'Molecular', 'Mycotoxin'],
        datasets: [{
            label: 'Research Interest',
            data: [14, 7, 23],
            backgroundColor: '#2ec551',
        }]
};
var researchChart = new Chart(research, {
        type: 'horizontalBar',
        data: researchData,
        options: barOptions
});

AbidKhairyAK avatar Mar 28 '20 14:03 AbidKhairyAK