Chart.JS 错误:this.scale 未定义

奥利

我一直在尝试,并且对 Chart.js 非常陌生。一切似乎都清楚了,但现在我想在每个条形图上贴上标签。尝试这个我得到一个错误:this.scale 是 undefined从网上得到了animation.onComplete Snippet,但似乎我犯了一个错误。图表工作正常.. 我只是没有在条形图上看到标签。也许有人可以帮我解决这个问题?!我也有一个同样问题的折线图。

            var ctx = document.getElementById("chartA").getContext("2d");

            Chart.defaults.global.animation.duration = 2400;
            Chart.defaults.global.animation.easing = "easeInOutQuad";
            Chart.defaults.global.elements.point.radius = 4;
            Chart.defaults.global.elements.point.hoverRadius = 5;
            Chart.defaults.global.elements.point.hitRadius = 1;

            var chart = new Chart(ctx, {
                type: "bar",
                data: {
                    labels: ["A","B","C"],
                    datasets: [{
                        label: "Test",
                        backgroundColor: "rgba(255, 99, 132, 0.2)",
                        borderColor: "#CF2748",
                        borderWidth: 1,
                        data: [10,20,30]
                    }]
                },                  
                options: {
                    tooltips: { mode: 'nearest', intersect: false },
                    layout: { padding: { left: 20, right: 0, top: 0, bottom: 0 } },
                    legend: { display: true, position: 'top' },
                    scales: {
                        yAxes: [{
                            ticks: { maxTicksLimit: 9, stepSize: 300, callback: function(value, index, values) { return value+" €"; } }                             
                        }]
                    },
                    animation: {
                        onComplete: function () {
                            var ctx = this.chart.ctx; // this part doesn't work
                            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);
                                });
                            });
                        }
                    }
                }
            });

非常感谢奥利弗


谢谢@Jeff 我正在测试并接近。

chart.data.datasets.forEach(function (dataset) {
    dataset.data.forEach(function (value) {
        ctx.fillText(value, x, y);
    });
});

现在我在“价值”中有正确的价值。但我需要参考 X 和 Y。我从哪里得到它们?如果我用静态值更改 X 和 Y,它会起作用,但所有值都在逻辑上打印在同一空间上。

ɢʀᴜɴᴛ

您的代码有几个问题。

您可以使用以下图表插件来完成相同的操作:

Chart.plugins.register({
   afterDatasetsDraw: function(chart) {
      var ctx = chart.ctx;
      chart.data.datasets.forEach(function(dataset, datasetIndex) {
         var datasetMeta = chart.getDatasetMeta(datasetIndex);
         datasetMeta.data.forEach(function(meta) {
            var posX = meta._model.x;
            var posY = meta._model.y;
            var value = chart.data.datasets[meta._datasetIndex].data[meta._index];
            // draw values
            ctx.save();
            ctx.textBaseline = 'bottom';
            ctx.textAlign = 'center';
            ctx.font = '16px Arial';
            ctx.fillStyle = 'black';
            ctx.fillText(value, posX, posY);
            ctx.restore();
         });
      });
   }
});

在脚本的开头添加这个插件。

xᴀᴍᴘʟᴇ

Chart.plugins.register({
   afterDatasetsDraw: function(chart) {
      var ctx = chart.ctx;
      chart.data.datasets.forEach(function(dataset, datasetIndex) {
         var datasetMeta = chart.getDatasetMeta(datasetIndex);
         datasetMeta.data.forEach(function(meta) {
            var posX = meta._model.x;
            var posY = meta._model.y;
            var value = chart.data.datasets[meta._datasetIndex].data[meta._index];
            // draw values
            ctx.save();
            ctx.textBaseline = 'bottom';
            ctx.textAlign = 'center';
            ctx.font = '16px Arial';
            ctx.fillStyle = 'black';
            ctx.fillText(value, posX, posY);
            ctx.restore();
         });
      });
   }
});

var ctx = document.getElementById("chartA").getContext("2d");

Chart.defaults.global.animation.duration = 2400;
Chart.defaults.global.animation.easing = "easeInOutQuad";
Chart.defaults.global.elements.point.radius = 4;
Chart.defaults.global.elements.point.hoverRadius = 5;
Chart.defaults.global.elements.point.hitRadius = 1;

var chart = new Chart(ctx, {
   type: "bar",
   data: {
      labels: ["A", "B", "C"],
      datasets: [{
         label: "Test",
         backgroundColor: "rgba(255, 99, 132, 0.2)",
         borderColor: "#CF2748",
         borderWidth: 1,
         data: [10, 20, 30]
      }]
   },
   options: {
      tooltips: {
         mode: 'nearest',
         intersect: false
      },
      layout: {
         padding: {
            left: 20,
            right: 0,
            top: 0,
            bottom: 0
         }
      },
      legend: {
         display: true,
         position: 'top'
      },
      scales: {
         yAxes: [{
            ticks: {
               maxTicksLimit: 9,
               stepSize: 300,
               callback: function(value, index, values) {
                  return value + " €";
               }
            }
         }]
      }
   }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="chartA"></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误TypeError:“ this.canvas未定义” 用angular和chart.js创建图表的问题

来自分类Dev

Angular JS函数未定义错误

来自分类Dev

未捕获的ReferenceError:未定义require-Chart.js

来自分类Dev

JS HighCharts.js Pie数据未定义错误

来自分类Dev

Salesforce中未定义vis.js网络regeneratorRuntime [未定义regeneratorRuntime]错误

来自分类Dev

Node.js中的错误“未定义窗口”

来自分类Dev

避免在Ember.js中未定义错误<yourObject>

来自分类Dev

Ember JS的DS FixtureAdapter错误未定义

来自分类Dev

Bender.js错误:“模块”未定义

来自分类Dev

未定义createRecord错误(Firebase + Ember.js)

来自分类Dev

Sequelize错误:Index.js中未定义defineCall

来自分类Dev

Discord.js Minecraft状态主体未定义错误

来自分类Dev

Next.js编译错误,属性未定义

来自分类Dev

JS Bin中出现错误-“未定义YUI”-

来自分类Dev

如何清除Angular JS中的未定义错误?

来自分类Dev

Express.js响应未定义错误

来自分类Dev

抄写JS错误-console.log未定义

来自分类Dev

Sequelize错误:Index.js中未定义defineCall

来自分类Dev

避免在Ember.js中未定义错误<yourObject>

来自分类Dev

提交表单时出现JS未定义错误

来自分类Dev

JS-错误:无法读取未定义的属性“ lat”

来自分类Dev

JS-错误:“无法读取未定义的属性”

来自分类Dev

Vue.js 插件错误:未定义

来自分类Dev

vue.js - 响应数据错误未定义

来自分类Dev

异步 JS 调用打印正常,但出现“未定义”错误

来自分类Dev

动态加载JS库时出现“未定义”错误

来自分类Dev

JS Jest Mocking - 预期收到未定义的错误

来自分类Dev

angular-nvd3给出各种错误,指出d3.scale未定义

来自分类Dev

angular-nvd3给出各种错误,指出d3.scale未定义

Related 相关文章

热门标签

归档