Chart.js 是一个流行的 JavaScript 图表库,用于创建各种类型的图表,包括条形图、折线图、饼图等。堆叠条形图是一种特殊类型的条形图,其中每个条形由多个部分组成,这些部分可以堆叠在一起以显示不同类别的数据。
在堆叠条形图中,每个 x 值(即每个条形)都有一个堆栈 ID,用于标识该条形属于哪个堆栈。这使得可以在同一个 x 值上叠加多个条形,从而更好地展示数据的层次结构。
Chart.js 支持多种类型的堆叠条形图,包括:
堆叠条形图适用于以下场景:
以下是一个使用 Chart.js 创建堆叠条形图的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Stacked Bar Chart</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="myChart" width="400" height="400"></canvas>
<script>
const ctx = document.getElementById('myChart').getContext('2d');
const myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Dataset 1',
data: [10, 20, 30, 40, 50, 60, 70],
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1,
stack: 'Stack 0'
},
{
label: 'Dataset 2',
data: [15, 25, 35, 45, 55, 65, 75],
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1,
stack: 'Stack 0'
},
{
label: 'Dataset 3',
data: [20, 30, 40, 50, 60, 70, 80],
backgroundColor: 'rgba(255, 206, 86, 0.2)',
borderColor: 'rgba(255, 206, 86, 1)',
borderWidth: 1,
stack: 'Stack 1'
}
]
},
options: {
scales: {
x: {
stacked: true
},
y: {
stacked: true
}
}
}
});
</script>
</body>
</html>
原因:
stack
属性设置错误。解决方法:
stack
属性值正确,并且相同堆栈的数据集具有相同的 stack
值。例如,如果希望前两个数据集属于同一个堆栈,第三个数据集属于另一个堆栈,可以这样设置:
datasets: [
{
label: 'Dataset 1',
data: [10, 20, 30, 40, 50, 60, 70],
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1,
stack: 'Stack 0'
},
{
label: 'Dataset 2',
data: [15, 25, 35, 45, 55, 65, 75],
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1,
stack: 'Stack 0'
},
{
label: 'Dataset 3',
data: [20, 30, 40, 50, 60, 70, 80],
backgroundColor: 'rgba(255, 206, 86, 0.2)',
borderColor: 'rgba(255, 206, 86, 1)',
borderWidth: 1,
stack: 'Stack 1'
}
]
通过这种方式,可以确保每个 x 值的堆栈 ID 正确,并且堆叠顺序符合预期。
领取专属 10元无门槛券
手把手带您无忧上云