I have a matplotlib.pyplot
graph that updates in a loop to create an animation, using this kind of code that I got from another answer:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = [1, 2, 3, 4] #x-coordinates
y = [5, 6, 7, 8] #y-coordinates
for t in range(10):
if t == 0:
points, = ax.plot(x, y, marker='o', linestyle='None')
else:
new_x = ... # x updated
new_y = ... # y updated
points.set_data(new_x, new_y)
plt.pause(0.5)
Now I want to put a plt.text()
on the plot which will show the time that has passed. Putting a plt.text()
statement inside the loop, however, creates a new text
object at every iteration, putting them all on top of each other. So I must create only one text
object at the first iteration, then modify it in subsequent iterations. Unfortunately, I cannot find in any documentation how to modify the properties of an instance of this object (it's a matplotlib.text.Text
object) once it is created. Any help?
Similar as set_data
you can use set_text
(see here for the documentation: http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.text.Text.set_text).
So first
text = plt.text(x, y, "Some text")
and then in the loop:
text.set_text("Some other text")
In your example it could look like:
for t in range(10):
if t == 0:
points, = ax.plot(x, y, marker='o', linestyle='None')
text = plt.text(1, 5, "Loops passed: 0")
else:
new_x = ... # x updated
new_y = ... # y updated
points.set_data(new_x, new_y)
text.set_text("Loops passed: {0}".format(t))
plt.pause(0.5)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With