Makie - How to clear ax whenever slider value change?

Using globals to make Makie’s plots interactive is not optimal. Instead you should look into how Observables work. See here for more infos: Observables & Interaction · Makie

Here is a reworked version of your example

using GLMakie

# Parameters
m = Observable(0.0)
c = Observable(0.0)
x = 0:0.01:10
y = Observable(Float64[])
f(x,m,c) = m*x+c


# Create a figure with an axis
fig = Figure(resolution = (800, 600))
ax = Axis(fig[1,1])

# Create a slider for m
m_slider = Slider(fig[2, 1], value = m[], range = 0.0:0.5:10.0)

# Create a slider for c
c_slider = Slider(fig[3, 1], value = c[], range = 0.0:1.0:10.0)

y = lift(m_slider.value, c_slider.value) do m, c
   # lift is similar to on (or onany), only that its return value will be wrapped into an Observable
   return f.(x,m,c)
end

on(y) do _
    # whenever y changes we update the axis limits
    reset_limits!(ax)
end

lines!(ax, x, y)

# Display the figure
display(fig)
1 Like