Не понятно, что вы пытаетесь сделать с помощью сохранения и восстановления ...
В приведенном ниже коде я удалил их и упростил ваш код, чтобы просто напечатать строку
function draw() {
y += Math.sin(y*23);
ctx.fillStyle = 'blue';
ctx.translate(1, 0);
ctx.fillRect(0, y++, 3, 3);
window.requestAnimationFrame(draw);
}
// init canvas
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var y = 0;
draw();
<canvas id="canvas"></canvas>
Но вы можете получить тот же эффект без перевода, просто увеличив координаты x:
function draw() {
y += Math.sin(y*23);
ctx.fillStyle = 'red';
ctx.fillRect(x++, y++, 3, 3);
window.requestAnimationFrame(draw);
}
// init canvas
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var y = 0; x = 0;
draw();
<canvas id="canvas"></canvas>
Но если все, что вам нужно, это симпатичная диаграмма, вы должны взглянуть на чарты:
https://www.chartjs.org/samples/latest/