# Automatically redraw Plot once Locator has changed

I have a Dynamic inside LocatorPane which provides a value to be used in several other places. The idea is to have a Plot that automatically updates once the Locator changes value. First, I define a point and a Locator control restricted to the unit disk:

pt = {1/2, 0};
LocatorPane[Dynamic[pt, (pt = #; pt = Function[{pnt}, If[Norm[pnt, 2] < 1, pnt, Normalize[pnt,
(Norm[#, 2] &)]]] /@pt) &], Graphics[{LightGray, Disk[{0, 0}, 1]}, ImageSize -> 100]]


Next, I set up the plot to draw a horizontal line at the Locator's current y-value:

Plot[pt[[2]], {x, -5, 5}]


This works, but the plot is not auto-updated once the Locator changes position. Interestingly, Dynamic[pt[[2]]] works if used standalone but not inside the plot. How can I make this work?

Edit: As suggested in the comments, enclosing the plot in Dynamic does the trick.

There is a similar issue where that does not work, apparently:

ContourPlot[{[f[1, C1, C2] == 0, g[2, C1, C2] == Pi/2}, {C1, -6, 6}, {C2, -6, 6}]


with f[x,C1,C2], g[x,C1,C2] being dependent on (dynamic) x and the real parameters $$C1$$, $$C2$$. These functions will intersect depending on $$C1$$, $$C2$$, so I tried to wrap ContourPlot inside Dynamic, and also each function separately. Why is ContourPlot evading my efforts?

• tried Dynamic[Plot[pt[[2]], {x, -5, 5}]]?
– kglr
Aug 11 '21 at 20:19
• @kglr: That was it. There is a ContourPlot where that does not work, though. Aug 11 '21 at 23:33