refresh = () => {
sortDataBuffer();
const solution = computeGaussianProcess();
var data;
if (myChart.data.datasets.length > 3) {
myChart.data.datasets[0].data = dataBuffer.map((d) => {
return { x: d.x, y: d.y };
});
myChart.data.datasets[1].data = solution.map((d) => d.y);
myChart.data.datasets[2].data = solution.map(
(d) => d.y - d.d * GaussianProcessParam.stdScale
);
myChart.data.datasets[3].data = solution.map(
(d) => d.y + d.d * GaussianProcessParam.stdScale
);
} else {
data = {
labels: solution.map((d) => d.x),
datasets: [
{
label: "Samples",
data: dataBuffer.map((d) => {
return { x: d.x, y: d.y };
}),
fill: false,
borderColor: "red",
tension: 0.1,
animation: false
},
{
type: "line",
label: "Gaussian Process (mean)",
data: solution.map((d) => d.y),
borderColor: "rgb(75, 192, 192)",
tension: 0.1
},
{
type: "line",
label: "Gaussian Process (lower)",
data: solution.map((d) => d.y - d.d * GaussianProcessParam.stdScale),
borderColor: "gray",
tension: 0.1,
pointRadius: 1
},
{
type: "line",
label: "Gaussian Process (upper)",
data: solution.map((d) => d.y + d.d * GaussianProcessParam.stdScale),
borderColor: "gray",
tension: 0.1,
pointRadius: 1,
fill: "-1"
}
]
};
myChart.data = data;
}
myChart.options.plugins.title.text = `Now: ${new Date()}`;
myChart.update();
newMsg(`
The myChart is refreshed with ${dataBuffer.length} points
`);
}