使用chart.js和输入值的堆叠条形图

72qzrwbm  于 2023-04-06  发布在  Chart.js
关注(0)|答案(1)|浏览(193)

我试图用chart.js绘制一个图表。一个只有两个值的垂直堆叠条形图。当我将数字硬编码为数据时,图形按预期工作。然而,我想动态获取两个不同输入类型的数字字段的值,并让它们在输入字段的值更新时更新图表。当我尝试这样做时,这个图不能正常工作。这里有一个链接到我创建的小提琴。https://jsfiddle.net/zissman/c9bnedy2/。和相应的代码...

<form>
<input type="number" id="calc1" onChange="updateChart2();"> 
<input type="number" id="calc2" onChange="updateChart2();">  
</form>
<canvas id="myChart"></canvas>
<script>
var data1a = document.getElementById('calc1');
var data2a = document.getElementById('calc2');
var ctx2 = document.getElementById('myChart').getContext('2d');
var chart2 = new Chart(ctx2, {
 plugins: [ChartDataLabels],
  type: 'bar',
  data: {
labels: [''],
datasets: [{
  label: 'Vorjahr',
  data: data1a.value,
backgroundColor: 'rgba(0,255,255,1)',
datalabels: {
    color: '#000000',
anchor: 'end',
align: 'start',
clip: true,
 formatter: function(value2, ctx2) {
      return value2 + '  %';
    }
  },
},
{
  label: 'Ist / Soll',
  data: data2a.value,
backgroundColor: 'rgba(0,100,100,1)',
datalabels: {
    color: '#000000',
anchor: 'end',
align: 'start',
clip: true,
 formatter: function(value2, ctx2) {
      return value2 + '  %';
    }
  },
}] },
options: {
   plugins: {
    legend: {
        display: true,
position: 'bottom',
}
}, scales: {
  x: {
    stacked: true,
  },
  y: {
  stacked: true,
  }}
},});
function updateChart2() {
var updateValues2 = [data1a.value, data2a.value];
chart2.data.datasets[0].data = updateValues2;
chart2.update();
};

任何帮助都将不胜感激。

pepwfjgg

pepwfjgg1#

输入字段应分别分配给每个数据集。

function updateChart2() {
  chart2.data.datasets[0].data = [data1a.value];
  chart2.data.datasets[1].data = [data2a.value];
  chart2.update();
}

Demo @ StackBlitz

相关问题