matplotlibボタンをアニメーション機能と組み合わせて使用するにはどうすればよいですか?

Monojit sarkar

matplotlibボタンウィジェットがクリックされた後にのみmatplotlibのアニメーション関数がプロットを開始するコードを書きたいと思います。これが私のステップです:

  1. 空のプロットを作成します。
  2. クリックイベントをアクティブにするプロットの任意の場所でマウスを押すと、x座標とy座標がリストに保存されます。
  3. アニメーション機能を実行するプレスボタンをクリックします。
  4. アニメーション関数は、保存されているx座標とy座標を使用してプロットします。

x座標とy座標の保存に成功しましたが、ボタンを押すと、必要なアニメーションプロットが表示されません。これは私が直面している最初のエラーです。

2番目のエラーは、クリックイベントに、ボタンを押した場所の座標も格納されることです。ボタンを押している間は座標が必要ありません。空のプロットの座標だけです。

from matplotlib.widgets import Button
from matplotlib.animation import FuncAnimation

x_coord,y_coord = [],[]

fig = plt.figure()
axis = fig.add_subplot(111,xlim=(-5,15),ylim=(-5,15))
line, = axis.plot([],[],lw=3)

def init():
    line.set_data([],[])
    return line, 

def animate(i):
    x_points = [0,x_coord[i]]
    y_points = [0,y_coord[i]]
    line.set_data(x_points,y_points)
    return line, 

def onclick(event):
    print(event.xdata,event.ydata)
    x_coord.append(event.xdata)
    y_coord.append(event.ydata)


def buttonPress(pressevent):
    print('pressed')
    print(x_coord)
    ani = FuncAnimation(fig,animate,init_func=init,frames=len(x_coord),interval=100,blit=False)
    
    

cid = fig.canvas.mpl_connect('button_press_event',onclick)

axprev = plt.axes([0.5,0,0.1,0.1])
button = Button(axprev,'press')
button.on_clicked(buttonPress)

plt.show()```
ディジエット朝日

2番目のエラーは簡単に修正できます。次を使用して、クリックが軸領域にあるかどうかをテストできます。 event.inaxes

アニメーションの問題は、関数でアニメーションオブジェクトを作成していることと、関数の最後ですぐにガベージコレクションされることが原因です。[FuncAnimation][2]州の文書

インスタンスオブジェクトへの参照を保持することが重要です。アニメーションは、Animationオブジェクトが唯一の参照を保持するタイマー(通常はホストGUIフレームワークから)によって進められます。Animationオブジェクトへの参照を保持していない場合、そのオブジェクト(したがってタイマー)はガベージコレクションされ、アニメーションが停止します。

これを回避する1つの方法は、アニメーションオブジェクトをグローバル変数に保持することです。よりクリーンな方法は、コードをカスタムクラスにカプセル化し、アニメーションをそのクラスのプロパティとして保存することです。

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.widgets import Button

x_coord, y_coord = [], []

fig = plt.figure()
axis = fig.add_subplot(111, xlim=(-5, 15), ylim=(-5, 15))
line, = axis.plot([], [], lw=3)
ani = None


def init():
    line.set_data([], [])
    return line,


def animate(i):
    x_points = [0, x_coord[i]]
    y_points = [0, y_coord[i]]
    line.set_data(x_points, y_points)
    return line,


def onclick(event):
    if event.inaxes is axis:
        print(event.xdata, event.ydata)
        x_coord.append(event.xdata)
        y_coord.append(event.ydata)


def buttonPress(pressevent):
    global ani
    print('pressed')
    print(x_coord)
    ani = FuncAnimation(fig, animate, init_func=init, frames=len(x_coord), interval=100, blit=False)


cid = fig.canvas.mpl_connect('button_press_event', onclick)

axprev = plt.axes([0.5, 0, 0.1, 0.1])
button = Button(axprev, 'press')
button.on_clicked(buttonPress)

plt.show()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

onFrameでアニメーションを組み合わせるにはどうすればよいですか?

分類Dev

ボタンとして組み合わせて機能するImageViewに重複するTextViewを実装するにはどうすればよいですか?

分類Dev

CSSアニメーション内で回転と平行移動を組み合わせるとどのように機能しますか?

分類Dev

シングルトンパターンを依存性注入と組み合わせて使用するにはどうすればよいですか?

分類Dev

kivyでボタンとして押すと再生されるアニメーションGIFを使用するにはどうすればよいですか?

分類Dev

Unicodeシンボルを組み合わせてカスタムxkbレイアウトを作成するにはどうすればよいですか?

分類Dev

パターンとグラデーションを1つのパスに組み合わせるにはどうすればよいですか?

分類Dev

機能するアニメーションボタンを作成するにはどうすればよいですか?

分類Dev

UIKitを使用して1つのdivで2つ以上のアニメーションを機能させるにはどうすればよいですか?

分類Dev

画像をpygameでアニメーションとして機能させるにはどうすればよいですか?

分類Dev

通知拡張機能を使用してライブタイルをアニメーション化するにはどうすればよいですか?

分類Dev

複数のアニメーション関数を使用してmatplotlibアニメーションを作成するにはどうすればよいですか

分類Dev

複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

分類Dev

matplotlibで円と線をアニメーション化するにはどうすればよいですか?

分類Dev

「ifステートメント」をモナークの日付と組み合わせて使用するにはどうすればよいですか?

分類Dev

Javascriptを使用してスプライトシートでアニメーションボタンを作成するにはどうすればよいですか?

分類Dev

Pythonでbase32をhotp(ワンタイムパスワード)と組み合わせて使用するにはどうすればよいですか?

分類Dev

2つのUnicodeシンボルを組み合わせて新しいシンボルを作成するにはどうすればよいですか?

分類Dev

機能のすべての組み合わせを作成するにはどうすればよいですか?

分類Dev

Swift 4 UIAlertController異なるアクションを1つの完了ハンドラーに組み合わせるにはどうすればよいですか?

分類Dev

Material-uiフレームワークを使用してアニメーションボタンを作成するにはどうすればよいですか?

分類Dev

LEDとピエッツォをarduinoのプッシュボタンと組み合わせるにはどうすればよいですか?

分類Dev

PLPGSQLでWITHをFORループと組み合わせて使用するにはどうすればよいですか?

分類Dev

ボタンをクリックしたときにアニメーションを遷移させるにはどうすればよいですか?

分類Dev

アニメーションを使用してmatplotlibでプロットタイトルを更新するにはどうすればよいですか?

分類Dev

ゾーン化されていない日付とタイムゾーンを「組み合わせる」にはどうすればよいですか?

分類Dev

HTMLのボタンを使用してアニメーションを再生するにはどうすればよいですか?

分類Dev

Datetime&int機能をScikitlearnと組み合わせるにはどうすればよいですか?

分類Dev

ナビゲーションバーとページ付けを組み合わせるにはどうすればよいですか?

Related 関連記事

  1. 1

    onFrameでアニメーションを組み合わせるにはどうすればよいですか?

  2. 2

    ボタンとして組み合わせて機能するImageViewに重複するTextViewを実装するにはどうすればよいですか?

  3. 3

    CSSアニメーション内で回転と平行移動を組み合わせるとどのように機能しますか?

  4. 4

    シングルトンパターンを依存性注入と組み合わせて使用するにはどうすればよいですか?

  5. 5

    kivyでボタンとして押すと再生されるアニメーションGIFを使用するにはどうすればよいですか?

  6. 6

    Unicodeシンボルを組み合わせてカスタムxkbレイアウトを作成するにはどうすればよいですか?

  7. 7

    パターンとグラデーションを1つのパスに組み合わせるにはどうすればよいですか?

  8. 8

    機能するアニメーションボタンを作成するにはどうすればよいですか?

  9. 9

    UIKitを使用して1つのdivで2つ以上のアニメーションを機能させるにはどうすればよいですか?

  10. 10

    画像をpygameでアニメーションとして機能させるにはどうすればよいですか?

  11. 11

    通知拡張機能を使用してライブタイルをアニメーション化するにはどうすればよいですか?

  12. 12

    複数のアニメーション関数を使用してmatplotlibアニメーションを作成するにはどうすればよいですか

  13. 13

    複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

  14. 14

    matplotlibで円と線をアニメーション化するにはどうすればよいですか?

  15. 15

    「ifステートメント」をモナークの日付と組み合わせて使用するにはどうすればよいですか?

  16. 16

    Javascriptを使用してスプライトシートでアニメーションボタンを作成するにはどうすればよいですか?

  17. 17

    Pythonでbase32をhotp(ワンタイムパスワード)と組み合わせて使用するにはどうすればよいですか?

  18. 18

    2つのUnicodeシンボルを組み合わせて新しいシンボルを作成するにはどうすればよいですか?

  19. 19

    機能のすべての組み合わせを作成するにはどうすればよいですか?

  20. 20

    Swift 4 UIAlertController異なるアクションを1つの完了ハンドラーに組み合わせるにはどうすればよいですか?

  21. 21

    Material-uiフレームワークを使用してアニメーションボタンを作成するにはどうすればよいですか?

  22. 22

    LEDとピエッツォをarduinoのプッシュボタンと組み合わせるにはどうすればよいですか?

  23. 23

    PLPGSQLでWITHをFORループと組み合わせて使用するにはどうすればよいですか?

  24. 24

    ボタンをクリックしたときにアニメーションを遷移させるにはどうすればよいですか?

  25. 25

    アニメーションを使用してmatplotlibでプロットタイトルを更新するにはどうすればよいですか?

  26. 26

    ゾーン化されていない日付とタイムゾーンを「組み合わせる」にはどうすればよいですか?

  27. 27

    HTMLのボタンを使用してアニメーションを再生するにはどうすればよいですか?

  28. 28

    Datetime&int機能をScikitlearnと組み合わせるにはどうすればよいですか?

  29. 29

    ナビゲーションバーとページ付けを組み合わせるにはどうすればよいですか?

ホットタグ

アーカイブ