您可以将目标值转换为浮动条,其中使用语法指定各个条[min, max]。给定一个名为 的值数组targetData,可以按如下方式对其进行转换Array.map()。
targetData.map(v => [v - 1, v + 1])
Run Code Online (Sandbox Code Playgroud)
此外,您需要xAxis为两个数据集定义单独的堆叠。为了在工具提示中显示原始目标值,toolips.callback.label还需要一个函数。
请查看下面的可运行代码片段。
targetData.map(v => [v - 1, v + 1])
Run Code Online (Sandbox Code Playgroud)
const actualData = [100, 180, 120, 80, 140, 170, 160];
const targetData = [110, 150, 140, 100, 120, 110, 170];
new Chart("chart", {
type: "bar",
data: {
labels: ["KPI 1", "KPI 2", "KPI 3", "KPI 4", "KPI 5", "KPI 6", "KPI 7"],
datasets: [{
label: "Actual",
backgroundColor: 'rgba(0, 0, 255, 0.2)',
data: actualData,
xAxisID: "x-axis-actual"
},
{
label: "Target",
backgroundColor: 'rgba(255, 0, 128, 1)',
data: targetData.map(v => [v - 1, v + 1]),
xAxisID: "x-axis-target"
}
]
},
options: {
tooltips: {
callbacks: {
label: (tooltipItem, data) => {
const v = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
return Array.isArray(v) ? (v[1] + v[0]) / 2 : v;
}
}
},
scales: {
xAxes: [{
id: "x-axis-target",
stacked: true
},
{
display: false,
offset: true,
stacked: true,
id: "x-axis-actual",
gridLines: {
offsetGridLines: true
}
}
],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |