Using only DSP.jl, you could do:
using DSP, Plots; gr()
default(fontfamily="Computer Modern", framestyle=:box, dpi=600)
w = range(1e-9, pi, 1024)
h = freqz(butter, w)
ws = (w/pi)*(0.5/dt)
p1 = plot(ws, 20*log10.(abs.(h)), xlims=(1e-2, 10), ylims=(-60, 6), xscale=:log10, xlabel="", ylabel="Magnitude (db)", label=false, title="2Hz Lowpass 4th-order Butterworth", lw=2, c=:blue, minorgrid=true)
p2 = plot(ws, 180/pi*unwrap(angle.(h)), xlims=(1e-2, 10), ylims=(-360, 6), xscale=:log10, xlabel="Frequency (Hz)",ylabel="Phase (deg)", label=false, lw=2, c=:red, minorgrid=true)
plot(p1, p2, layout=(2,1), size=(800, 800))
which produces: