更改matplotlib.pyplot text()对象属性

Abh*_*Das 9 python plot animation matplotlib

我有一个matplotlib.pyplot图形,在循环中更新以创建动画,使用我从另一个答案得到的这种代码:

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)
Run Code Online (Sandbox Code Playgroud)

现在我想plt.text()在情节上加上一个将显示已经过去的时间.plt.text()然而,在循环中放置一个语句会text每次迭代时创建一个新对象,将它们全部放在一起.所以我必须text在第一次迭代时只创建一个对象,然后在后续迭代中修改它.不幸的是,我无法在任何文档中找到如何在matplotlib.text.Text创建此对象(它是对象)的实例的属性后进行修改.有帮助吗?

jor*_*ris 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")
Run Code Online (Sandbox Code Playgroud)

然后在循环中:

text.set_text("Some other text")
Run Code Online (Sandbox Code Playgroud)

在您的示例中,它可能看起来像:

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)
Run Code Online (Sandbox Code Playgroud)