javascript - 如何使用chartjs在每个条形图上自定义索引标签?

标签 javascript chart.js

我正在开发一个使用条形图的网站,但我找不到自定义条形图以在每个条形图上显示值的方法。

这是我的条形图js

$(function(){
        var t;
        function size(animate){
            if (animate == undefined){
                animate = false;
            }
            clearTimeout(t);
            t = setTimeout(function(){
                $("#bar-chart-js").each(function(i,el){
                    $(el).attr({
                        "width":$(el).parent().width(),
                        "height":$(el).parent().outerHeight()
                    });
                });
                redraw(animate);
                var m = 0;
                $(".chartJS").height("");
                $(".chartJS").each(function(i,el){ m = Math.max(m,$(el).height()); });
                $(".chartJS").height(m);
            }, 30);
        }
        $(window).on('resize', function(){ size(false); });

        function redraw(animation){
            var options = {};
            if (!animation){
                options.animation = true;
            } else {
                options.animation = true;
            }
            var dataJson1 = <?php echo json_encode($monthly_income);?>;
            var dataJson2 = <?php echo json_encode($monthly_expense);?>;
            var data1 =  $.map(dataJson1, function(el) { return el; });
            var data2 =  $.map(dataJson2, function(el) { return el; });
            //console.log(dataJson1);
            //console.log('data1:' + data1);
            var barChartData = {
                labels : ["January","February","March","April","May","June","July","August","September","October","November","December"],
                datasets : [
                    {
                        fillColor : "#79D1CF",
                        strokeColor : "#79D1CF",
                        data : data1
                    },
                    {
                        fillColor : "#E67A77",
                        strokeColor : "#E67A77",
                        data : data2
                    }
                ]
            };
            var myLine = new Chart(document.getElementById("bar-chart-js").getContext("2d")).Bar(barChartData);
        }
        size(true);
    });

我想将索引标签显示如下图

enter image description here

请帮助我,我非常感谢您的帮助。

最佳答案

只需在animationComplete回调中添加标签

var myLine = new Chart(document.getElementById("bar-chart-js").getContext("2d")).Bar(barChartData, {
    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);
            });
        })
    }
});

我已经关闭了工具提示,假设您不再需要它们(因为新添加的标签中显示了相同的信息)。如果您需要工具提示,那么您需要扩展条形图并将上述逻辑移至每次绘制图表之后。

<小时/>

fiddle - http://jsfiddle.net/geaje18p/ (我用硬编码数组替换了你的 php echo)

<小时/>

enter image description here

关于javascript - 如何使用chartjs在每个条形图上自定义索引标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529272/

相关文章:

javascript - 在原型(prototype)中获取图像的 alt 属性

javascript - 如何使用vue router-link只改变一个参数

javascript - 如何用 Promises 实现流畅的接口(interface)?

PHP POST 表单无需点击

javascript - 如何在 Chart.JS 条形图中最后一个条形上方添加标签?

javascript - 如何将javascript中的数组值相加,例如chartjs数据数组和输入值总和

javascript - 折线 ChartJS 空/空值不打破线

javascript - 检查 Chrome 中的元素不显示选定的选项

javascript - 使用 Chart.js 在两个 y 轴刻度之间添加填充

chart.js - 在条形图中的列之间添加空间。图表