我在我的代码中使用chart.js。基本上,它工作得很好,但是我在同一个画布上创建第n次图表时遇到了一个问题。我收到错误消息,告诉我应该先销毁图表。然后我在这里找到了一些如何做到这一点的想法,并将这部分代码作为解决方案:
let chartStatus = Chart.getChart("line-chart");
if (chartStatus != undefined) {
chartStatus.destroy();
//$("div.line-chart").remove();
//$("div.line-chart").append('<canvas id="line-chart" style="width: 1221px; height: 280px;"></canvas>');
}
它工作正常-至少我没有得到任何错误了,但当我创建图表第二次和更多次,它得到调整大小。请看所附的图片:
如果你看一下比例尺,你会发现它变了。
我的问题是:我怎样才能销毁一个图表并正确地重新创建它的大小/比例等,或者我怎样才能更新一个图表而不是销毁它?
代码如下所示:
浏览器:
let chartStatus = Chart.getChart("line-chart");
if (chartStatus != undefined) {
chartStatus.destroy();
//$("div.line-chart").remove();
//$("div.line-chart").append('<canvas id="line-chart" style="width: 1221px; height: 280px;"></canvas>');
}
new Chart(document.getElementById("line-chart"), {
type: 'line',
data: {
labels: labelX,
datasets: [{
data: waga,
label: "Waga",
borderColor: "#3e95cd",
borderWidth: 1,
fill: false
}
]
},
options: {
title: {
display: true,
responsive: true,
maintainAspectRatio: false
}
}
});
超文本:
<div><canvas id="line-chart" style="width: 1221px; height: 280px;"></canvas></div>
2条答案
按热度按时间1l5u6lss1#
我已经找到了一个适合我的here解决方案。现在,我的代码如下所示:
和HTML部分...
现在,无论创建多少次,图表看起来都正常。
kuhbmx9i2#
画布会在每次绘制图表时调整大小,以适应图表的内容。也可以用相反的方式来完成--让内容适应图表的大小,但这既复杂又耗时,而且如果大小非常不相等,也不一定能正常工作,所以chart.js选择调整大小。
因此,您不能依赖于画布的样式大小,因此建议大致基于代码摘录来设置容器div的样式大小,如下面的示例所示。
尽管如此,更有效的解决方案是只更改数据,然后调用chart.update,如果它符合您的目的,如下所示:
一个二个一个一个