11

別の回答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)

plt.text()ここで、経過した時間を示すプロットを配置したいと思います。plt.text()ただし、ループ内にステートメントを配置すると、反復ごとに新しいオブジェクトが作成され、それらがすべて重なり合って配置されますtext。したがって、最初の反復でオブジェクトを 1 つだけ作成し、その後の反復でそれを変更する必要があります。残念ながら、作成後にこのオブジェクト (オブジェクト) のインスタンスのプロパティを変更する方法をドキュメントで見つけることができません。何か助けはありますか?textmatplotlib.text.Text

4

2 に答える 2

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)
于 2012-06-11T12:10:54.630 に答える
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()呼び出しに注意してください。画面をクリアします。

于 2012-06-11T12:11:56.753 に答える