Skip to content

[Roadmap] Makie backend — parity with the Plots backend #408

Description

@ocots

Follow-up to #366 / PR #407 (and control-toolbox/CTBase.jl#539), which landed the Makie backend as a proof of concept — render only, common figure shapes.

Goal

Bring CTBaseMakie (and the CTModelsMakie case-layer plumbing) to full parity with the CTBasePlots backend so Makie.plot(sol) matches Plots.plot(sol) on the whole test_plot_reference.jl matrix.

Status

Parity work is implemented across two PRs — control-toolbox/CTBase.jl#540 (the backend) and #411 (the case-layer plumbing, tests, docs). CTBase merges first; #411's CI is red until then (cross-repo dependency).

Scope

In CTBase/ext/CTBaseMakie.jl:

  • Decorations — draw Plotting.HLine / Plotting.VLine (hlines! / vlines!) with style translation. Needed for box-bound lines and initial/final-time markers, which plot(sol) adds by default. (CTBase#540)
  • Series types — :steppost → Makie.stairs!(…; step=:post), :scatter → Makie.scatter!. Constant-interpolation controls currently render as lines. (CTBase#540)
  • z_order — honour :back / :front draw ordering (sort like CTBasePlots._z_rank, or translate!). (CTBase#540)
  • render! / overlay — implement Plotting.render!(::MakieBackend, target, ::Figure) targeting existing Axis blocks by deterministic leaf order; then wire Makie.plot!(sol) in CTModelsMakie (currently throws NotImplemented). (CTBase#540 + feat(plotting): Makie backend parity + flatten ext/case #411; also Makie.plot(; size=…) empty-canvas shim)
  • User kwargs — forward the non-series subplot attributes too (grid, framestyle, legend position…), not just color/linewidth/linestyle/alpha. (CTBase#540 — curated _AXIS_USER_KEYS whitelist, since Makie has no attributes(:Series) analogue)
  • Docs — add CairoMakie to the CTBase / CTModels docs builds and render real Makie examples in the plotting guide; register the CTModelsMakie API reference page. (CTBase#540 + feat(plotting): Makie backend parity + flatten ext/case #411; plus a "User Attributes: Series vs Axis" guide section on the per-backend kwarg split)

Separately:

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions