Public
Edited
Apr 13, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Plot.plot({
marks: [
Plot.barY(
data.filter((d) => d.duration < 100),
Plot.binX(
{ y: "count" },
{
x: "duration",
fill: "version",
fy: "version",
fx: "phase"
}
)
),
Plot.ruleY([0])
]
})
Insert cell
py37
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
py310
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
data = {
return [...py310, ...py37];
}
Insert cell
py310 = await parse(FileAttachment("py310-all.txt"), "py310")
Insert cell
py37 = await parse(FileAttachment("py37-all.txt"), "py37")
Insert cell
parse = async (attachment, version) => {
const logs = await attachment.text();
return logs
.split("\n")
.map((line, index) => {
const [duration, phase] = line.split(" ");
return {
index,
duration: parseFloat(duration.replace("s", "")),
phase,
version
};
})
.filter((x) => typeof x.duration !== "undefined" && x.phase);
}
Insert cell
py37OnlyDurations = FileAttachment("py37-all.txt")
Insert cell
py310OnlyDurations = FileAttachment("py310-all.txt")
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more