Note
Go to the end to download the full example code.
12.1.10.5.3. Auto-update plot#
This demo shows two possibilities of how to create an auto updating plot, when the data does not come from a device allowing a live plot.
from numpy import random
import time
from itom import dataObject
from itom import plot1
Option 1: open plot with fixed interval, the plot shares its values
from a given dataObject, update the dataObject regularly and call
the replot slot of the plot to force an update of the canvas (without that
slot, the canvas is updated once the user makes a zoom, clicks somewhere…)
d = dataObject.zeros([1, 3], "float64")
[i, h] = plot1(d, properties={"yAxisInterval": (0, 1)})
t = time.time()
for i in range(0, 50):
d[0, :] = random.rand(3)
h.call("replot")
time.sleep(0.1)
print("finished in %.2f s using replot" % (time.time() - t))
finished in 5.16 s using replot
Option 2: similar to option 1, but the plot is continuously given the same object again as source. Some caching mechanism provides a quick replot of the data. This option makes an automatic bounds-check of the new source and can therefore automatically reset automatic axes intervals
[i, h] = plot1(d)
t = time.time()
for i in range(0, 50):
d[0, :] = random.rand(3)
h["source"] = d
time.sleep(0.1)
print("finished in %.2f s using autoupdate" % (time.time() - t))
finished in 5.30 s using autoupdate
Total running time of the script: (0 minutes 10.581 seconds)