GMT.jl is possibly one of the best bets for this and @joa-quim is the guru. See a simpler example here but package goes miles beyond in terms of plots layout complexity.