ChartJS Javascript-如何绘制具有未知数据集大小的堆叠条形直方图

ChartJS Javascript-如何绘制具有未知数据集大小的堆叠条形直方图,javascript,plot,histogram,chatjs,Javascript,Plot,Histogram,Chatjs,我想用ChartJS绘制一个堆叠的条形柱状图。 我看到了很多代码,我知道怎么做 就我而言,问题如下: 比如说,我有30个日期对应于标签(或轴) 然后,对于每个日期,我可能有一个或多个显示特定数据的值 例如:日期1-->[1,2],日期2-->[0.5],日期3-->[2,4,6,8]等等 如何不知道数据集的大小会有所不同 到目前为止,我做了如下工作: var chartdata = { labels: [], datasets: [{ data: [] }

我想用ChartJS绘制一个堆叠的条形柱状图。 我看到了很多代码,我知道怎么做

就我而言,问题如下:

比如说,我有30个日期对应于标签(或轴)

然后,对于每个日期,我可能有一个或多个显示特定数据的值

例如:日期1-->[1,2],日期2-->[0.5],日期3-->[2,4,6,8]等等

如何不知道数据集的大小会有所不同

到目前为止,我做了如下工作:

  var chartdata = {
    labels: [],
    datasets: [{
      data: []
    }, {
      data: []
    }]
  };
  var canva_id = "#" + canvaID
  var ctx = $(canva_id);

  var options = {
    maintainAspectRatio: true,
    tooltips: {
      mode: 'index',
      intersect: false
    },
    responsive: true,
    scales: {
      xAxes: [{
        stacked: true,
        scaleLabel: {
          display: true,
          labelString: 'Date'
        },
        gridLines: {
          display: false
        }
      }],
      yAxes: [{
        stacked: true,
        ticks: {
          beginAtZero: true,
          stepSize: 1
        },
        gridLines: {
          display: false
        },
        scaleLabel: {
          display: true,
          labelString: 'Nb height'
        },

      }]
    },
    legend: {
      display: false
    },
    title: {
      display: true,
      text: ''
    }
  }
  var chartInstance = new Chart(ctx, {
    type: 'bar',
    data: chartdata,
    options: options
  });

 [...]

var color = Array("#6ec72e", "#A77A2F", "#BF1515", "#4C4CAD", "#993366", "#401010");
  //Dict contain the date as a key and the array of data value as a value
  for (const [key, value] of Object.entries(dict)) {

    chartInstance.data.labels[key] = value["date"];
    chartInstance.update();

    var count = 0;
    // create a new dataset with empty values
    var newDataset = {
      data: []
    };
    chartInstance.data.datasets.push(newDataset);

    for (let v = 0; v < value["height"].length; v++) {
      chartInstance.data.datasets[key].backgroundColor = color[v];

      chartInstance.data.datasets[key].data[v] = value["height"][v];

    }

    // Finally, make sure you update your chart, to get the result
    chartInstance.update();

  }
var chartdata={
标签:[],
数据集:[{
数据:[]
}, {
数据:[]
}]
};
var canva_id=“#”+canvaID
var ctx=$(canva_id);
变量选项={
维护Aspectratio:是的,
工具提示:{
模式:“索引”,
交集:错
},
回答:是的,
比例:{
xAxes:[{
对,,
scaleLabel:{
显示:对,
标签字符串:“日期”
},
网格线:{
显示:假
}
}],
雅克斯:[{
对,,
滴答声:{
贝吉纳泽罗:是的,
步长:1
},
网格线:{
显示:假
},
scaleLabel:{
显示:对,
标签字符串:“Nb高度”
},
}]
},
图例:{
显示:假
},
标题:{
显示:对,
文本:“”
}
}
var chartInstance=新图表(ctx{
类型:'bar',
数据:图表数据,
选项:选项
});
[...]
变量颜色=数组(“6ec72e”、“A77A2F”、“BF1515”、“4CAD”、“993366”、“401010”);
//Dict包含日期作为键,数据值数组作为值
for(对象项的常量[键,值](dict)){
chartInstance.data.labels[key]=值[“date”];
update();
var计数=0;
//创建具有空值的新数据集
var newDataset={
数据:[]
};
chartInstance.data.datasets.push(newDataset);
对于(设v=0;v
请问有什么帮助吗

谢谢