drawYaxis = (context, yScale, X, yExtent) => {
const [startY, endY] = yExtent;
const tickPadding = 3,
tickSize = 6,
yTicks = yScale.ticks(),
yTickFormat = yScale.tickFormat();
context.strokeStyle = "black";
context.beginPath();
yTicks.forEach(d => {
context.moveTo(X, yScale(d));
context.lineTo(X - tickSize, yScale(d));
});
context.stroke();
context.beginPath();
context.moveTo(X - tickSize, startY);
context.lineTo(X, startY);
context.lineTo(X, endY);
context.lineTo(X - tickSize, endY);
context.stroke();
context.textAlign = "right";
context.textBaseline = "middle";
context.fillStyle = "black";
yTicks.forEach(d => {
context.beginPath();
context.fillText(yTickFormat(d), X - tickSize - tickPadding, yScale(d));
});
}