Unfortunately, the @manipulate macro can only rerun the expression at every update of any of its input.
What you need here is Reactive <http://julialang.org/Reactive.jl/api.html#sample-and-merge>'s `sampleon` function: using Reactive, Interact f = figure(); α=slider(1:0.1:3) β=slider(1:0.1:3) γ=slider(1:0.1:3) replot = button("Replot") # Commit your changes map(display, α, β, γ, replot) # optional sampled_coeffs = sampleon(redo, lift(tuple, α, β, γ)) withfig(f) @lift plot(apply(fun, sampled_coeffs)) IPython doesn't do update on release, Interact, in fact, uses the same widgets. What it does do is have at most 4 updates at any given time in the processing pipeline (any more updates replace the last update in the queue). On Mon, Sep 8, 2014 at 8:45 PM, Andrei Berceanu <[email protected]> wrote: > Another option would be to use drop-down boxes with selectable values or > custom text boxes instead of sliders, at least as a temporary fix. Anyone > knows how I can do that? > By the way, iirc, IPython does have the update-on-release mechanism > implemented in their interactive widget functionality. > > On Monday, September 8, 2014 4:10:05 PM UTC+2, John Myles White wrote: >> >> I suspect the only way to do this is to change Interact so that it >> exposes a minimum time threshold before it registers a state change. >> >> — John >> >> On Sep 8, 2014, at 4:16 AM, Andrei Berceanu <[email protected]> >> wrote: >> >> > I have some code along the lines of >> > >> > f = figure() >> > @manipulate for α=1:0.1:3, β=1:0.1:3, γ=1:0.1:3; withfig(f) do >> > y = fun(α,β,γ) >> > PyPlot.plot(x, y) >> > end >> > end >> > >> > where fun is a *very slow* function to evaluate. Is there any way to >> tell @manipulate to update the resulting plot only after I release the >> sliders? Otherwise what I get is, I release them to the desised values and >> then have to wait ages for all the intermediate plots to be drawn. >> > >> > Tnx! >> >>
