Chartjs error : time scale: "time.format" is deprecated. Please use "time.parser" instead
Chartjs error : time scale: "time.format" is deprecated. Please use "time.parser" instead
我正在为我的项目使用 Chartjs。我使用的不同版本是:ChartJS 2.9.3、Chartjs-plugin-streaming 1.8.0、moment.js 2.24.0、chartjs-adapter-moment 0.1.1。
我绘制了一个实时图表,我每秒都会收到此警告,这会非常快地填充内存。
time scale: "time.format" is deprecated. Please use "time.parser" instead
我的代码是:
private chartPlotting() {
this.Linecap.push(new Chart('canvas', {
type: 'line',
data: {
datasets: [{
label: 'Flow',
lineTension: 0,
data: [],
borderColor: '#3cb371',
fill: false
},
{
label: 'Height',
lineTension: 0,
data: [],
borderColor: '#FF0000',
fill: false
}
]
},
options: {
responsive: true,
scales: {
xAxes: [{
type: 'realtime',
time: {
parser: 'false'
},
display: true
}],
yAxes: [{
display: true,
ticks: {
beginAtZero: true,
maxTicksLimit: 10,
stepSize: 5,
max: 500
}
}],
},
plugins: {
streaming: {
duration: 300000,
refresh: 1000,
delay: 2000,
pause: false,
ttl: undefined,
frameRate: 48,
onRefresh: function (Linecap) {
///var data = []
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = function () {
var data = JSON.parse(xhr.responseText);
Linecap.data.datasets[0].data.push({
x: Date.now(),
y: data[0]["yrData"]
});
Linecap.data.datasets[1].data.push({
x: Date.now(),
y: data[0]["Height"]
});
};
}
}
}
}
}));
}
我试图找出原因,后来知道可能会在下一个版本的 chartJS 中,即 3.0.0 这个问题将被删除。在 2.9.3 中是否有解决此错误的方法?
问题是由于您使用的不同库的版本不兼容造成的。
例如 chartjs-plugin-streaming 的文档说明如下:
Version 1.8 requires Chart.js 2.7.x or 2.8.x.
要解决这个问题,您有两个选择。
- 摆脱 chartjs-plugin-streaming
- 降级 Chart.js 2.9.3 到 2.8.0
更新
和Angular8,我推荐使用ng2-charts
,它是基于Chart.js
。此外,您应该摆脱 chartjs-plugin-streaming
并自己实现相关功能。
请看下面StackBlitz
6 个月后,它仍然是他们回购的公开拉取请求。您可以看到讨论和长期悬而未决的修复 here.
如果您不想降级或更改库,您可以自己在本地使用修复程序,或者使用厌倦了等待的贡献者上传的 npm 包之一。我正在使用 @taeuk-gang/chartjs-plugin-streaming
.
这个问题是 fixed in chartjs-plugin-streaming 1.9.0. Also, Chart.js 3.x is supported in the latest version 2.0.0-beta.3。
我正在为我的项目使用 Chartjs。我使用的不同版本是:ChartJS 2.9.3、Chartjs-plugin-streaming 1.8.0、moment.js 2.24.0、chartjs-adapter-moment 0.1.1。 我绘制了一个实时图表,我每秒都会收到此警告,这会非常快地填充内存。
time scale: "time.format" is deprecated. Please use "time.parser" instead
我的代码是:
private chartPlotting() {
this.Linecap.push(new Chart('canvas', {
type: 'line',
data: {
datasets: [{
label: 'Flow',
lineTension: 0,
data: [],
borderColor: '#3cb371',
fill: false
},
{
label: 'Height',
lineTension: 0,
data: [],
borderColor: '#FF0000',
fill: false
}
]
},
options: {
responsive: true,
scales: {
xAxes: [{
type: 'realtime',
time: {
parser: 'false'
},
display: true
}],
yAxes: [{
display: true,
ticks: {
beginAtZero: true,
maxTicksLimit: 10,
stepSize: 5,
max: 500
}
}],
},
plugins: {
streaming: {
duration: 300000,
refresh: 1000,
delay: 2000,
pause: false,
ttl: undefined,
frameRate: 48,
onRefresh: function (Linecap) {
///var data = []
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = function () {
var data = JSON.parse(xhr.responseText);
Linecap.data.datasets[0].data.push({
x: Date.now(),
y: data[0]["yrData"]
});
Linecap.data.datasets[1].data.push({
x: Date.now(),
y: data[0]["Height"]
});
};
}
}
}
}
}));
}
我试图找出原因,后来知道可能会在下一个版本的 chartJS 中,即 3.0.0 这个问题将被删除。在 2.9.3 中是否有解决此错误的方法?
问题是由于您使用的不同库的版本不兼容造成的。
例如 chartjs-plugin-streaming 的文档说明如下:
Version 1.8 requires Chart.js 2.7.x or 2.8.x.
要解决这个问题,您有两个选择。
- 摆脱 chartjs-plugin-streaming
- 降级 Chart.js 2.9.3 到 2.8.0
更新
和Angular8,我推荐使用ng2-charts
,它是基于Chart.js
。此外,您应该摆脱 chartjs-plugin-streaming
并自己实现相关功能。
请看下面StackBlitz
6 个月后,它仍然是他们回购的公开拉取请求。您可以看到讨论和长期悬而未决的修复 here.
如果您不想降级或更改库,您可以自己在本地使用修复程序,或者使用厌倦了等待的贡献者上传的 npm 包之一。我正在使用 @taeuk-gang/chartjs-plugin-streaming
.
这个问题是 fixed in chartjs-plugin-streaming 1.9.0. Also, Chart.js 3.x is supported in the latest version 2.0.0-beta.3。