Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chart.js 页面上的两个chartjs图表抛出数据未定义错误_Chart.js - Fatal编程技术网

Chart.js 页面上的两个chartjs图表抛出数据未定义错误

Chart.js 页面上的两个chartjs图表抛出数据未定义错误,chart.js,Chart.js,我创建了以下问题,得到了友好的回答(有人建议我创建一个新问题!)。虽然答案很有效,但我在同一页上有2个图表,由于某种原因抛出了一个无法读取未定义的错误的属性“数据” 我不想包括我的2张图表的完整性,但移动条形图的afterUpdate代码如下所示: function(chart) { var datasets = chart.config.data.datasets; console.log(datasets); for (let iDs = 1; iDs <

我创建了以下问题,得到了友好的回答(有人建议我创建一个新问题!)。虽然答案很有效,但我在同一页上有2个图表,由于某种原因抛出了一个
无法读取未定义的
错误的属性“数据”

我不想包括我的2张图表的完整性,但移动条形图的afterUpdate代码如下所示:

function(chart) {
    var datasets = chart.config.data.datasets;

    console.log(datasets);

    for (let iDs = 1; iDs < datasets.length; iDs++) {
        let dataset = datasets[iDs];

        // I added the following line however stacks the graph and doesn't display it correctly like the first
        if (typeof dataset._meta[0] !== 'undefined'){
            for (var i = 0; i < dataset._meta[0].data.length; i++) {
                let model = dataset._meta[0].data[i]._model;
                model.x += iDs * offset;
                model.controlPointNextX += iDs * offset;
                model.controlPointPreviousX += iDs * offset;
            }
        }
    }
}
功能(图表){
var数据集=chart.config.data.datasets;
console.log(数据集);
for(让iDs=1;iDs
我已经在至少呈现图形的代码中添加了
typeof
检查,但是我希望两个图形的功能相同,而添加typeof检查只会堆叠图形并忽略代码以移动条


这一点在以下几张图表中可以很好地看到:

所描述的行为很奇怪,因为如果两张图表都是孤立创建的,那么它们工作正常。通过更改
afterUpdate
函数并利用图表函数获取数据集的元数据,可以解决此问题

afterUpdate: function(chart) {
  let datasets = chart.config.data.datasets;
  for (let iDs = 1; iDs < datasets.length; iDs++) {
    let meta = chart.getDatasetMeta(iDs);
    for (var i = 0; i < meta.data.length; i++) {
      let model = meta.data[i]._model;
      model.x += iDs * offset;
      model.controlPointNextX += iDs * offset;
      model.controlPointPreviousX += iDs * offset;
    }
  }
}
更新后:功能(图表){
让datasets=chart.config.data.datasets;
for(让iDs=1;iDs
请查看下面经过修改的可运行代码:

Chart.defaults.global.legend.labels.usePointStyle=true;
Chart.defaults.scale.gridLines.drawOnChartArea=false;
var偏移=6;
新图表('graph_1'{
“类型”:“条”,
“数据”:{
“标签”:[“2020-08-01”、“2020-09-01”、“2020-10-01”],
“数据集”:[{
“标签”:“标题测试1”,
“数据”:[30,20,60],
“x轴ID”:“条x轴1”,
“barThickness”:14,
“背景色”:“rgba(241213157,1)”,
“边框颜色”:“rgba(241213157,1)”,
“pointBackgroundColor”:“rgba(241213157,1)”
},
{
“标签”:“标题测试2”,
“数据”:[30,20,60],
“x轴ID”:“条x轴2”,
“barThickness”:14,
“背景色”:“rgba(237141120,1)”,
“边框颜色”:“rgba(237141120,1)”,
“pointBackgroundColor”:“rgba(237141120,1)”
},
{
“标签”:“标题测试3”,
“数据”:[30,20,60],
“x轴ID”:“条x轴3”,
“barThickness”:14,
“背景色”:“rgba(120199212,1)”,
“边框颜色”:“rgba(120199212,1)”,
“pointBackgroundColor”:“rgba(120199212,1)”
}
]
},
“插件”:[{
“后更新”:功能(图表){
让datasets=chart.config.data.datasets;
for(让iDs=1;iDs