Pluto does not track mutations to variables, just assignments. So if you define fig in one cell and do Axis(fig[1, 1]) in another, then Pluto doesn’t know that this mutates fig, and if the second cell is changed, it will run multiple times against the same figure.
That’s why you’re on the right track with the begin block, you wrap the whole cell making a single figure in one block and if you change anything, the figure is recreated. Unless you plot huge amounts of data, recreating a Figure should be pretty fast, on the order of milliseconds.
In Makie itself, you can of course also make changes to an existing plot and see the changes immediately with WGLMakie or GLMakie, but Pluto itself is not geared towards that workflow.