我有一个matplotlib.pyplot
图表,在循环中更新以创建动画,使用我从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)
现在我想在情节上放一个plt.text()
来显示已经过去的时间。但是,在循环中放置plt.text()
语句会在每次迭代时创建一个新的text
对象,将它们全部放在彼此之上。所以我必须在第一次迭代时只创建一个text
对象,然后在后续迭代中修改它。不幸的是,我无法在任何文档中找到如何在创建此对象的实例(它是matplotlib.text.Text
对象)时修改它们的属性。有什么帮助吗?
答案 0 :(得分:15)
与set_data
类似,您可以使用set_text
(请参阅此处了解文档:http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.text.Text.set_text)。
首先
text = plt.text(x, y, "Some text")
然后在循环中:
text.set_text("Some other text")
在您的示例中,它可能如下所示:
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)
答案 1 :(得分:0)
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
for t in range(10):
plt.cla()
plt.text(4.6,6.7,t)
x = np.random.randint(10, size=5)
y = np.random.randint(10, size=5)
points, = ax.plot(x, y, marker='o', linestyle='None')
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
plt.pause(0.5)
注意plt.cla()
电话。它清除了屏幕。