If fig_or_sub is a Figure, you could place the GridLayout at position [1, 1], otherwise you place it at fig_or_sub[] which just means at that position.
function show!(fig_or_sub, rel_heigth)
gl = if fig_or_sub isa Figure
fig_or_sub[1, 1] = GridLayout()
else
fig_or_sub[] = GridLayout()
end
image(gl[1,1], rand(10,10))
plot(gl[2,1],sin.(1:0.1:10), color=:red)
rowsize!(gl,2,Auto(rel_heigth))
end
##
fig = Figure()
show!(fig[1,1], 1)
show!(fig[1,2], 2)
fig
##
fig = Figure()
show!(fig, 2)
fig