javascript - Chart.js 图表从未生成

标签 javascript php jquery chart.js

我已经验证我的两个数组的长度都是 24 - 但由于某种原因,下面的语法没有生成我的图表。它仅适用于带有条形图的一个数据集,但我正在尝试将其修改为带有两个数据集的组合条形折线图。

是什么阻止我的图表显示,因为这不是数据问题......

    alert(values.length);
alert(values1.length);
var ctx = document.getElementById('canvas').getContext('2d');
var chart = new Chart(ctx, {
        datasets: [{
                type: 'bar',
                labels: labelsarr,
                label: 'Red Team',
                backgroundColor: 'rgba(0, 129, 214, 0.8)',
                data: [values]
            }, {
                type: 'line', 
                label: 'Green Team',
                backgroundColor: 'rgba(0,129, 218, 0.8)',
                data: [values1]
            }, {
            options: {
                tooltips: {
                    callbacks: {
                        label: function (t, d) {
                            var xLabel = d.datasets[t.datasetIndex].label;
                            var yLabel = t.yLabel >= 1000 ? '$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '$' + t.yLabel;
                            return xLabel + ': ' + yLabel;
                        }
                    }
                },
                legend: {
                    display: false,
                    position: 'top',
                },
                scales: {
                    yAxes: [{
                            ticks: {
                                beginAtZero: true,
                                callback: function (value, index, values) {
                                    if (parseInt(value) >= 1000) {
                                        return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                                    } else { return '$' + value; }
                                }
                            }
                        }]
                }
            },
            plugins: [{
                    beforeDraw: function (chart) {
                        var labels = chart.data.labels;
                    }
                }]
            }
        ]}
    );

最佳答案

几个问题:

  • 您没有正确定义图表类型。第一个数据集类型应位于数据集本身之外。
  • 您正在独立分配 datasets 数组,而它属于 data 对象(同样适用于 <强>标签数组)。
  • 由于 valuesvalues1 已经是数组,因此不应使用数组表示法包装它们。

这是您的代码的修订版本:

var labelsarr = ['Jan', 'Feb', 'Mar'];
var values = [1, 2, 3];
var values1 = [1, 2, 3];

// above variables are explicitly defined, since no ajax is being used

var ctx = document.getElementById('canvas').getContext('2d');
var chart = new Chart(ctx, {
   type: 'bar',
   data: {
      labels: labelsarr,
      datasets: [{
         label: 'Red Team',
         backgroundColor: 'rgba(0, 129, 214, 0.8)',
         data: values
      }, {
         type: 'line',
         label: 'Green Team',
         backgroundColor: 'rgba(0,129, 218, 0.3)',
         data: values1
      }]
   },
   options: {
      tooltips: {
         callbacks: {
            label: function(t, d) {
               var xLabel = d.datasets[t.datasetIndex].label;
               var yLabel = t.yLabel >= 1000 ? '$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '$' + t.yLabel;
               return xLabel + ': ' + yLabel;
            }
         }
      },
      legend: {
         display: false,
         position: 'top',
      },
      scales: {
         yAxes: [{
            ticks: {
               beginAtZero: true,
               callback: function(value, index, values) {
                  if (parseInt(value) >= 1000) {
                     return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                  } else {
                     return '$' + value;
                  }
               }
            }
         }]
      }
   },
   plugins: [{
      beforeDraw: function(chart) {
         var labels = chart.data.labels;
      }
   }]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="canvas"></canvas>

关于javascript - Chart.js 图表从未生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340244/

相关文章:

javascript - Bootplus 保持评论开放

javascript - 当我使用过渡集更改 css 背景属性时,为什么我的背景会闪烁白色?

javascript - 在 Javascript 中动态分配正则表达式模式

php - 记录每个脚本的PHP错误

javascript - Jquery冲突?

jquery - RegEx 只有数字和单位添加退格问题

javascript - 如何解析JSON格式的数据

php - 如何阻止表单提交按钮刷新页面?

php - 如何在 php 中使用 Google 我的商家 API

jquery - 使用 Jquery 数据表对数据排序属性中的值进行自定义排序