gpt4 book ai didi

javascript - 在混合图表中对齐线条和条形

转载 作者:行者123 更新时间:2023-11-30 21:16:34 25 4
gpt4 key购买 nike

我正在制作混合图表,我需要在条形图上绘制阶梯线图。默认情况下,我的折线图中的数据点在条形中间对齐,如下所示:

Mixed chart

我想让行的开头与栏的开头对齐,如下所示:

Situation I want

我已经阅读了 Chartjs 的文档,但我找不到让该行从我的栏开头开始的方法。

我设置了一个小例子来进一步解释我的问题:

var opc = $("#chart");
var myChart = new Chart(opc, {
type: 'bar',
data: {
labels: ['Item 1', 'Item 2', 'Item 3'],
datasets: [{
type: 'bar',
label: 'Bar Component',
data: [10, 20, 30],
}, {
type: 'line',
steppedLine: true,
label: 'Line Component',
data: [25, 5, 20],
fill: false
}]
},
options: {
scales: {
yAxes: [{
display: true,
ticks: {
suggestedMin: 0, // minimum will be 0, unless there is a lower value.
// OR //
beginAtZero: true // minimum value will be 0.
}
}]
}
}
});

这是工作 fiddle 的链接:https://jsfiddle.net/7yheenc6/1/

最佳答案

我浏览了文档,但找不到任何关于如何解决这个问题的信息。我虽然通过代码修复它会相对简单,但是我错了,无论如何我让它工作了,你需要手动更改 chart.js 源文件中的代码。这是您需要更改的行

之前(chart.js):

行号:12891

function lineToPoint(previousPoint, point) {
var vm = point._view;
if (point._view.steppedLine === true) {
ctx.lineTo(point._view.x, previousPoint._view.y);
ctx.lineTo(point._view.x, point._view.y);
} else if (point._view.tension === 0) {
ctx.lineTo(vm.x, vm.y);
} else {
ctx.bezierCurveTo(
previousPoint._view.controlPointNextX,
previousPoint._view.controlPointNextY,
vm.controlPointPreviousX,
vm.controlPointPreviousY,
vm.x,
vm.y
);
}
}

之后(chart.js):

行号:12891

function lineToPoint(previousPoint, point) {
var vm = point._view;
if (point._view.steppedLine === true) {
ctx.lineTo((point._view.x - previousPoint._view.x)/2 + previousPoint._view.x, previousPoint._view.y);
ctx.lineTo((point._view.x - previousPoint._view.x)/2 + previousPoint._view.x, point._view.y);
ctx.lineTo(point._view.x, point._view.y);
} else if (point._view.tension === 0) {
ctx.lineTo(vm.x, vm.y);
} else {
ctx.bezierCurveTo(
previousPoint._view.controlPointNextX,
previousPoint._view.controlPointNextY,
vm.controlPointPreviousX,
vm.controlPointPreviousY,
vm.x,
vm.y
);
}
}

Jsfiddle 供引用:https://jsfiddle.net/Kai_Draord/7yheenc6/4/

输出:

chart.js mod

我希望这能解决您的问题:)

关于javascript - 在混合图表中对齐线条和条形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45628578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com