Public
Edited
Jun 19
Insert cell
Insert cell
Plot.plot({
width: 800,
height: 300,
marks: [
Plot.dot(eggs.slice(1), {x: "eggs", y: (d) => -3 * d.index, fill: "model", r: 5}),
Plot.text(eggs.slice(1), {x: "eggs", y: (d) => -3 * d.index, fill: "model", text: "model", dx: 9, dy: 3, lineAnchor: "bottom", textAnchor: "start"}),
Plot.rectY(fakeResponseData, Plot.binX({y: "count"}, {fill: "lightgray", x: { value: "value", thresholds: [-5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105]}})),
],
x: {
domain: [0, 100],
},
y: {
domain: [-30, 50],
axis: false,S
}
})
Insert cell
data = ({
models: ["Humans","Claude 4 Opus", "DeepSeek R1", "Grok 3", "GPT 4.1", "Llama 4 Maverick", "Mistral Large", "Qwen 3 325B", "Gemini 2.5 Flash","(Readers)"],

eggs: [60.09, 75, 68, 70, (60+75)/2, 70, 65, 65, 50, 88.68],

abort: [51.37, 45, 70, 65, 80, 75, 60, 35, 65, 87.33],

transition: [47.09, 40, 45, 40, 40, 50, 45, 45, null, 49.38],

grandma: [12.28, 2.5, 1.5, 2.5, (1+5)/2, 20, 0.5, (1+5)/2, null, 12.21],

virus: [45.99, (65+70)/2, 72, 60, 65, 40, 40, 30, 70, 58.43],

robots: [22.06, 20, 10, 20, 15, 32, 10, 25, null, 32.25],

merge: [15.30, 17.5, 3, 10, 5, 20, 20, 15, null, 18.61],

squid: [9.17, (2+5)/2, 0.8, 1, 2.5, 7, 0.5, (1+5)/2, 0.5, 13.76],

twin: [29.52, 20, 45, 25, 30, 30, 40, 43, null, 48.48],

sim: [51.73, 40, 55, 60, 35, 40, 60, 45, null, 52.03],

antiquarks: [27.20, 17.5, 65, 65, 2, 40, 65, 30, 75, 39.04],

bob: [58.42, 67.5, 45, 40, 30, 45, 50, 65, null, 68.39],
});
Insert cell
eggs = {
const x = data.models.map((model, i) => ({ model, eggs: data.eggs[i], index: i}))
return x;
}
Insert cell
fakeResponseData = [31.19,
37.59,
66.18,
62.07,
45.97,
45.28,
61.72,
72.93,
37.78,
50.26,
71.28,
24.48,
54.93,
37.32,
75.15,
66.91,
72.21,
66.37,
60.18,
47.01,
50.81,
52.87,
47.97,
28.09,
36.31,
44.52,
79.07,
68.79,
45.55,
83.57,
62.52,
36.91,
38.23,
39.69,
47.55,
73.83,
79.29,
75.13,
41.98,
48.53,
74.52,
63.14,
42.39,
90.21,
39.45,
42.34,
73.77,
75.68,
59.09,
65.56,
63.85,
45.05,
90.35,
76.76,
58.54,
84.86,
49.08,
77.22,
79.28,
62.36,
44.64,
61.95,
77.82,
62.25,
71.48,
71.88,
82.04,
42.14,
73.13,
79.29,
68.3,
68.84,
60.83,
25.1,
60.54,
64.7,
6.42,
83.23,
69.37,
31.86,
65.16,
39.01,
61.77,
50.52,
64.81,
51.33,
60.54,
91.98,
43.08,
57.54,
77.76,
67.67,
42.03,
52.05,
54.2,
64.84,
54.96,
72.85,
62.44,
68.23,
57.94,
58.25,
71.5,
49.81,
38.68,
39.57,
32.39,
30.31,
47.15,
64.65,
39.04,
52.37,
34.87,
44.17,
50.76,
86.67,
74.35,
66.45,
62,
107.49,
85.56,
62.93,
29.33,
32.85,
-36.18,
27.59,
89.38,
91.2,
59.66,
48.75,
83.77,
28.2,
19.57,
42.51,
9.13,
55.09,
72.65,
67.37,
83.15,
78.99,
49.05,
8.57,
22.12,
35.21,
96.36,
63.74,
-11.51,
67.49,
-29.94,
92.11,
20.26,
52.11,
30,
57.33,
104.43,
59.08,
82.39,
82.53,
71.71,
47.99,
30.33,
22.19,
-2.38,
71.07,
44.23,
57.77,
93.05,
35.22,
40.57,
55.77,
69.44,
112.31,
32.71,
59.12,
79.34,
55.45,
81.73,
-3.36,
79.33,
46.95,
57.31,
42.45,
-6.93,
38.52,
163.47,
38.99,
68.6,
120.28,
55.18,
108.53,
112.2,
82.11,
74.07,
69.21,
86.75,
44.16,
87.84,
-1.6,
15.12,
52.99,
52.99,
44.29,
43.25,
-13.96,
63.67,
51.97,
80.15,
64.81,
91.27,
58.58,
49.4,
88.35,
60.44,
54.01,
87.72,
24.56,
54.88,
42.59,
85.71,
66.87,
].map((x) => ({value: 10 * Math.round(Math.min(Math.max(x, 0), 100)/10)}))
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