Update makie plot in a loop

When working with Julia, it is common to encounter situations where you need to update a plot in a loop. This can be challenging because updating the plot in each iteration of the loop can be time-consuming and inefficient. In this article, we will explore three different ways to solve this problem and determine which option is the best.

Option 1: Using the display function

One way to update a makie plot in a loop is by using the display function. This function allows you to update the plot without re-rendering it completely. Here is an example:


using Makie

function update_plot()
    scene = Scene()
    lines!(scene, [0, 1], [0, 1])
    display(scene)
end

for i in 1:10
    update_plot()
    sleep(1)
end

In this example, we define a function called update_plot that creates a new scene and adds a line to it. We then call the display function to update the plot. Finally, we use a loop to call the update_plot function multiple times with a delay of 1 second between each iteration.

Option 2: Using the plot! function

Another way to update a makie plot in a loop is by using the plot! function. This function allows you to update the plot by modifying the existing plot object. Here is an example:


using Makie

scene = Scene()
lines!(scene, [0, 1], [0, 1])

for i in 1:10
    lines!(scene, [0, i/10], [0, i/10])
    display(scene)
    sleep(1)
end

In this example, we create a scene and add a line to it. Inside the loop, we update the plot by adding a new line with different coordinates. We then call the display function to update the plot and use a delay of 1 second between each iteration.

Option 3: Using the AbstractPlotting.jl package

The third option is to use the AbstractPlotting.jl package, which provides a high-level interface for creating and updating plots. Here is an example:


using AbstractPlotting

scene = Scene()
lines!(scene, [0, 1], [0, 1])

for i in 1:10
    lines!(scene, [0, i/10], [0, i/10])
    AbstractPlotting.display(scene)
    sleep(1)
end

In this example, we create a scene and add a line to it. Inside the loop, we update the plot by adding a new line with different coordinates. We then call the AbstractPlotting.display function to update the plot and use a delay of 1 second between each iteration.

After exploring these three options, it is clear that using the display function is the most efficient way to update a makie plot in a loop. This option allows you to update the plot without re-rendering it completely, resulting in faster execution times. Therefore, option 1 is the recommended solution for updating makie plots in a loop.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents