Saltar al contenido

cómo mostrar valores de datos en Chart.js

Posterior a de una larga búsqueda de datos pudimos resolver esta dificultad que pueden tener ciertos los usuarios. Te brindamos la respuesta y esperamos serte de gran apoyo.

Solución:

Edición tardía: hay un complemento oficial para Chart.js 2.7.0+ para hacer esto: https://github.com/chartjs/chartjs-plugin-datalabels

Respuesta original:

Puede recorrer los puntos/barras enAnimationComplete y mostrar los valores


Avance

ingrese la descripción de la imagen aquí


HTML



Texto

var chartData = 
    labels: ["January", "February", "March", "April", "May", "June"],
    datasets: [
        
            fillColor: "#79D1CF",
            strokeColor: "#79D1CF",
            data: [60, 80, 81, 56, 55, 40]
        
    ]
;

var ctx = document.getElementById("myChart1").getContext("2d");
var myLine = new Chart(ctx).Line(chartData, 
    showTooltips: false,
    onAnimationComplete: function () 

        var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) 
            dataset.points.forEach(function (points) 
                ctx.fillText(points.value, points.x, points.y - 10);
            );
        )
    
);

var ctx = document.getElementById("myChart2").getContext("2d");
var myBar = new Chart(ctx).Bar(chartData, 
    showTooltips: false,
    onAnimationComplete: function () 

        var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) 
            dataset.bars.forEach(function (bar) 
                ctx.fillText(bar.value, bar.x, bar.y - 5);
            );
        )
    
);

Violín – http://jsfiddle.net/uh9vw0ao/

Aquí hay una versión actualizada para Chart.js 2.3

23 de septiembre de 2016: Edité mi código para trabajar con v2.3 para ambos tipos de línea/barra.

Importante: Incluso si no necesita la animación, no cambie la opción de duración a 0, de lo contrario obtendrá chartInstance.controller no está definido error.

var chartData = 
    labels: ["January", "February", "March", "April", "May", "June"],
        datasets: [
            
                fillColor: "#79D1CF",
                strokeColor: "#79D1CF",
                data: [60, 80, 81, 56, 55, 40]
            
        ]
    ;

var opt = 
    events: false,
    tooltips: 
        enabled: false
    ,
    hover: 
        animationDuration: 0
    ,
    animation: 
        duration: 1,
        onComplete: function () 
            var chartInstance = this.chart,
                ctx = chartInstance.ctx;
            ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
            ctx.textAlign = 'center';
            ctx.textBaseline = 'bottom';

            this.data.datasets.forEach(function (dataset, i) 
                var meta = chartInstance.controller.getDatasetMeta(i);
                meta.data.forEach(function (bar, index) 
                    var data = dataset.data[index];                            
                    ctx.fillText(data, bar._model.x, bar._model.y - 5);
                );
            );
        
    
;
 var ctx = document.getElementById("Chart1"),
     myLineChart = new Chart(ctx, 
        type: 'bar',
        data: chartData,
        options: opt
     );

Esta opción de animación funciona para 2.1.3 en un gráfico de barras.

Respuesta de @Ross ligeramente modificada

animation: 
duration: 0,
onComplete: function () 
    // render the value of the chart above the bar
    var ctx = this.chart.ctx;
    ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
    ctx.fillStyle = this.chart.config.options.defaultFontColor;
    ctx.textAlign = 'center';
    ctx.textBaseline = 'bottom';
    this.data.datasets.forEach(function (dataset) 
        for (var i = 0; i < dataset.data.length; i++) 
            var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model;
            ctx.fillText(dataset.data[i], model.x, model.y - 5);
        
    );

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *