from sympy import *
from spb import *
var("u, v")

x = (1 + v / 2 * cos(u / 2)) * cos(u)
y = (1 + v / 2 * cos(u / 2)) * sin(u)
z = v / 2 * sin(u / 2)
graphics(
surface_parametric(x, y, z, (u, 0, 2*pi), (v, -1, 1),
    "v", {"colorscale": "mygbm"},
    use_cm=True, color_func=lambda u, v: u,
    wireframe=True, wf_n1=20,
    colorbar_ticks_formatter=multiples_of_pi_over_2(label="π")
),
xlabel="x", ylabel="y", zlabel="z",
backend=PB, title="Möbius strip")