7

私はmatplotlibが初めてです。Python で更新し、matplotlib の pyplot を使用してアニメーション化する xy 座標のリストがあります。あらかじめ x 範囲と y 範囲を指定したい。以下は私の現在のコードです:

import matplotlib.pyplot as plt
x=[1,2,3,4]
y=[5,6,7,8]
for t in range(100):
    #lists x and y get updated here
    #...
plt.plot(x, y, marker='o', linestyle='None')
plt.show()

ご覧のとおり、反復ループの最後でplt.plot()andを使用して、最終的な座標のみをプロットします。しかし、このステップをループに配置し、指定された一時停止時間で反復ごとにプロットして、ループの実行時にアニメーションを表示したいと考えています。plt.show()

そのステートメントをループ内に移動するか、その周りを微調整するだけでは機能しません。私はそれを非常にシンプルに保ちたいのですが、matplotlib.animation. より多くのモジュールとライブラリを使用せずplt.pause()に、やりたいことを実行できる簡単な方法はありますか?

私はオンラインで多くの場所を見ましたが、そこにあるほとんどの方法で直面する問題は、これに Windows で python(x,y) (python バージョン 2.7) を使用していることと、複雑すぎるモジュールとライブラリを使用するアニメーションがここでクラッシュしていることです。

ただし、この例のような単純なものを matplotlib サイトで実行できます。これは、私が望むものに近いですが、完全ではありません。したがって、おそらく最良の方法は、私の 2D データのケース (この例は 1D 行の場合) で機能するこの例の変更です。しかし、他の提案は大歓迎です。

4

1 に答える 1

8

これは、アニメーションのデモから採用されています。

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):
    if t == 0:
        points, = ax.plot(x, y, marker='o', linestyle='None')
        ax.set_xlim(0, 10) 
        ax.set_ylim(0, 10) 
    else:
        new_x = np.random.randint(10, size=5)
        new_y = np.random.randint(10, size=5)
        points.set_data(new_x, new_y)
    plt.pause(0.5)

これは単純ですが、docstringは遅いと言っています。

于 2012-06-05T11:42:30.020 に答える