draw = (t1 = 0, t2 = 1e10, r = 1) => {
const d = data.slice(t1, t2),
extentX = d3.extent(data, (d) => d.x),
extentY = d3.extent(data, (d) => d.y),
extentV = d3.extent(data, (d) => d.v);
return Plot.plot({
grid: true,
x: { nice: true, domain: extentX },
y: { nice: true, domain: extentY },
color: { nice: true, domain: extentV, legend: true, scheme: "Inferno" },
marks: [
Plot.dot(d, {
x: "x",
y: "y",
r: r,
fill: "v",
opacity: 0.2
}),
Plot.link(
[
{ x1: 0, y1: 0, x2: extentX[0], y2: Math.abs(extentX[0] * k) },
{ x1: 0, y1: 0, x2: extentX[1], y2: Math.abs(extentX[1] * k) }
],
{
x1: "x1",
y1: "y1",
x2: "x2",
y2: "y2",
stroke: "gray"
}
)
]
});
}