Shared axis labels

I have a surface and contour plot who share the same x and y labels. The surface plot has a z label. In my attempt, the labels on the surface plot are not shown. Why?

Plotting code

p1 = surface(sol.t, x, z, zlabel="|u|²", colorbar = false)
p2 = contourf(sol.t,x,z)

plt = plot(p1,p2,layout=(1,2),xlabel="Time",ylabel="Space",size=(1200,700))

Full MWE:

using DifferentialEquations, LinearAlgebra, Plots, SparseArrays
plotlyjs()

N₁=31 # Number of waveguides / size of solution vector
γ=-1  # Nonlinear term strength parameter
h=0.4 # Grid spacing 

centerGrid  = (N₁-1)/2;
x = -centerGrid:centerGrid;

# Coefficient matrix of second-order centered-difference operator (δ²u)ₙ
M           = spdiagm(-1 => fill(1,N₁-1), 0 => fill(-2,N₁), 1 => fill(1,N₁-1))
M[N₁,1]     = 1; # Periodic boundary conditions
M[1,N₁]     = 1;

# RHS of DNLS. The solution vector u is a N₁x1 complex vector
g₁(u,p,t)   = 1*im*(p[1]*M*u + @.(γ*((abs(u))^2).*u) )

# Julia is explicitly typed (e.g, cannot have Int and Complex in same array) and so we must convert the object containing the initial data to be complex
u0  = Complex.(sech.(x))

tspan = (0.0,100)
prob = ODEProblem(g₁,u0,tspan, [h])
sol = solve(prob, Tsit5(), reltol=1e-8, abstol=1e-8)

z= [abs(sol.u[i][j])^2  for j=1:N₁, i=1:size(sol)[2]] # |u|²

p1 = surface(sol.t, x, z, zlabel="|u|²", colorbar = false)
p2 = contourf(sol.t,x,z)
plt = plot(p1,p2,layout=(1,2),xlabel="Time",ylabel="Space",size=(1200,700))