eltociear/matplotlib-tasks-v1
matplotlib-tasks-v1 Task dataset for a Matplotlib/Seaborn RL / eval environment, in the shape used by the Prime Intellect Environments Hub. 27 plotting tasks over a fixed set of small datasets. The model builds the figure, then reads the answer back off the axes; the grade is an exact row comparison against a reference. Deterministic — no LLM judge, no external API, no network, and no pixels. Category Tasks Covers line_plots 6 ydata/xdata readback, multiple lines… See the full description on the dataset page: https://huggingface.co/datasets/eltociear/matplotlib-tasks-v1.
matplotlib-tasks-v1
Task dataset for a Matplotlib/Seaborn RL / eval environment, in the shape used by the Prime Intellect Environments Hub.
27 plotting tasks over a fixed set of small datasets. The model builds the figure, then reads the answer back off the axes; the grade is an exact row comparison against a reference. Deterministic — no LLM judge, no external API, no network, and no pixels.
⚠ Why this dataset does not compare images
Image comparison is the obvious way to grade a plot and the wrong one: it fails on font hinting, DPI, backend and antialiasing long before it tests whether the model plotted the right thing. Here the model builds the figure and the grade reads values back off the artists.
That still leaves a determinism trap, and it was measured on matplotlib 3.11.1, not assumed:
ln.get_color() -> (0.1215…, 0.4666…, 0.7058…) from the STYLE CYCLE — version-dependent
ax.get_xlim() -> (-0.2, 4.2) after autoscale depends on margin defaults
ln.get_ydata() -> exactly what was passed in stable
hist counts -> computed from the data stable
ax.get_xlim() -> after ax.set_xlim(0, 10) stable — the task set itEvery task therefore grades only: user-supplied data, computed values, and properties the task itself sets explicitly. Never a default colour, never an autoscaled limit, never an automatic tick location.
Fields
Verification
Every task is independently checked: it runs, is deterministic across two freshly built figures, returns a non-empty list of JSON-safe primitives — which catches an Artist or numpy scalar leaking out instead of a plain value — contains no NaN/inf, and survives the serialisation round-trip exactly. All 27 pass on matplotlib 3.11.1 / seaborn 0.13.2 with the Agg backend.
Builder and verifier: `build_tasks.py`.
