如何结合使用matplotlib按钮和动画功能?

莫诺吉特·萨卡

我想编写一个代码,其中只有在我单击matplotlib按钮小部件之后,matplotlib中的动画功能才开始绘制。这是我的步骤:

  1. 我创建一个空图。
  2. 我在情节上的任意位置按下鼠标以激活单击事件,并且x和y坐标存储在列表中。
  3. 我单击运行动画功能的按钮。
  4. 动画功能通过使用存储的x和y坐标进行绘制。

我已经成功地存储了x和y坐标,但是按下按钮并没有给我所需的动画图。这是我面临的第一个错误。

第二个错误是我的点击事件还存储了我按下按钮的位置的坐标。我不希望在按下按钮期间出现坐标。我只是空图上的坐标。

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()```
朝日朝日

第二个错误很容易解决,您可以使用以下命令测试点击是否在轴区域内 event.inaxes

动画问题是由于您正在函数中创建动画对象,并且在函数末尾立即对其进行垃圾回收。[FuncAnimation][2]状态文档

保留对实例对象的引用至关重要。动画由计时器(通常来自主机GUI框架)推进,该动画对象持有唯一的引用。如果不保留对Animation对象的引用,则将对其进行垃圾回收(并因此对计时器进行引用),这将停止动画。

解决该问题的一种方法是将动画对象保留在全局变量中。一种更干净的方法是将代码封装在自定义类中,并将动画存储为该类的属性。

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

如何设置动画和旋转按钮

来自分类Dev

如何使用HTML中的按钮播放动画?

来自分类Dev

动画功能:使用单选按钮更改div宽度

来自分类Dev

如何使用VBA添加到Outook 2013的功能区和/或获得功能区按钮的名称?

来自分类Dev

IPython Notebook:如何结合HTML输出和matplotlib图形?

来自分类Dev

使用Scikit-Learn的SVR,您如何结合分类和连续功能来预测目标?

来自分类Dev

结合功能和for循环

来自分类Dev

如何使用js和CSS制作动画Blob按钮?

来自分类Dev

如何将Datetime和int功能与Scikit学习结合使用?

来自分类Dev

如何结合这些功能

来自分类Dev

使用networkx和matplotlib平滑网络动画

来自分类Dev

如何使用matplotlib为复杂功能设置动画?

来自分类Dev

如何创建具有多个动画功能的matplotlib动画

来自分类Dev

Polly:如何结合TimeoutPolicy和RetryPolicy请求功能

来自分类Dev

如何分割“非动画和动画”图片,以正确使用调整大小功能

来自分类Dev

如何使用按钮向Matplotlib条形图和折线图添加排序功能

来自分类Dev

结合使用NetworkX和matplotlib.ArtistAnimation

来自分类Dev

如何使用HTML中的按钮播放动画?

来自分类Dev

动画功能:使用单选按钮更改div宽度

来自分类Dev

如何制作功能良好的动画按钮?

来自分类Dev

如何生成这样的动画和“按钮动画”?

来自分类Dev

结合PyQt和Matplotlib

来自分类Dev

使用不带动画功能的matplotlib进行动画

来自分类Dev

Matplotlib:单击启动动画的按钮后如何保存动画?

来自分类Dev

如何使用 matplotlib 为圆圈和线条设置动画?

来自分类Dev

如何使用复选按钮激活和停用功能?

来自分类Dev

如何结合本文档的按键和按钮点击事件

来自分类Dev

如何使用按钮停止功能?

来自分类Dev

使用 QShortcut 时如何更改按钮的动画?

Related 相关文章

  1. 1

    如何设置动画和旋转按钮

  2. 2

    如何使用HTML中的按钮播放动画?

  3. 3

    动画功能:使用单选按钮更改div宽度

  4. 4

    如何使用VBA添加到Outook 2013的功能区和/或获得功能区按钮的名称?

  5. 5

    IPython Notebook:如何结合HTML输出和matplotlib图形?

  6. 6

    使用Scikit-Learn的SVR,您如何结合分类和连续功能来预测目标?

  7. 7

    结合功能和for循环

  8. 8

    如何使用js和CSS制作动画Blob按钮?

  9. 9

    如何将Datetime和int功能与Scikit学习结合使用?

  10. 10

    如何结合这些功能

  11. 11

    使用networkx和matplotlib平滑网络动画

  12. 12

    如何使用matplotlib为复杂功能设置动画?

  13. 13

    如何创建具有多个动画功能的matplotlib动画

  14. 14

    Polly:如何结合TimeoutPolicy和RetryPolicy请求功能

  15. 15

    如何分割“非动画和动画”图片,以正确使用调整大小功能

  16. 16

    如何使用按钮向Matplotlib条形图和折线图添加排序功能

  17. 17

    结合使用NetworkX和matplotlib.ArtistAnimation

  18. 18

    如何使用HTML中的按钮播放动画?

  19. 19

    动画功能:使用单选按钮更改div宽度

  20. 20

    如何制作功能良好的动画按钮?

  21. 21

    如何生成这样的动画和“按钮动画”?

  22. 22

    结合PyQt和Matplotlib

  23. 23

    使用不带动画功能的matplotlib进行动画

  24. 24

    Matplotlib:单击启动动画的按钮后如何保存动画?

  25. 25

    如何使用 matplotlib 为圆圈和线条设置动画?

  26. 26

    如何使用复选按钮激活和停用功能?

  27. 27

    如何结合本文档的按键和按钮点击事件

  28. 28

    如何使用按钮停止功能?

  29. 29

    使用 QShortcut 时如何更改按钮的动画?

热门标签

归档