Makie: heatmap with inset

Ah I see the axis decorations were not translated, try like this:

function inset_axis!(fig, ax; z = 300, extent = (0.25, 0.75, 0.25, 0.75), axis_kwargs...)

    bbox = lift(ax.scene.px_area) do pxa
        _l, _b = minimum(pxa)
        _r, _t = maximum(pxa)
        l = _l + extent[1] * (_r - _l)
        r = _l + extent[2] * (_r - _l)
        b = _b + extent[3] * (_t - _b)
        t = _b + extent[4] * (_t - _b)
        BBox(l, r, b, t)
    end

    inset_ax = Axis(fig, bbox=bbox; axis_kwargs...)

    translate_forward!(x::Makie.Transformable, z) = translate!(Accum, x, 0, 0, z)
    translate_forward!(ax::MakieLayout.LineAxis, z) = foreach(x -> translate_forward!(x, z), values(ax.elements))
    translate_forward!(_) = nothing

    foreach(x -> translate_forward!(x, z), values(inset_ax.elements))
    translate!(Accum, inset_ax.scene, 0, 0, z)
    
    return inset_ax
end
f, ax, hm = heatmap(randn(10, 10), colormap = :Blues)
ax2 = inset_axis!(f, ax)
lines!(ax2, cumsum(randn(100)))
ax3 = inset_axis!(f, ax2, extent = (0, 0.5, 0, 1), z = 500, alignmode = Outside(10))
lines!(ax3, cumsum(randn(100)), color = Cycled(2))
f

2 Likes