Spyder中绘制动态图的显示问题

Spyder 中动态图显示问题

在学习matplotlib.animation模块时,使用Spyder编辑以下代码,运行后发现创建的动画只能静态显示

# 创建动画图形
import matplotlib.pyplot as plt
from matplotlib import animation

def create_circle():
    circle = plt.Circle((0,0),radius = 0.5)
    return circle

def update_radius(i, circle):
    circle.radius = i * 0.5
    return circle

def create_animation():
    fig = plt.gcf()
    ax = plt.axes(xlim = (-10, 10), ylim = (-10, 10))
    ax.set_aspect('equal') 
    circle = create_circle()
    ax.add_patch(circle)
    anim = animation.FuncAnimation(fig, update_radius,fargs = (circle,),frames = 30, interval = 50)
    plt.title('Simple Circle Animation')
    plt.show()


if __name__ == '__main__':
    create_animation()

显示的图形如下,未有报错:
在这里插入图片描述
但是在python自带的idle下运行,却生成了动态图:
在这里插入图片描述
查找了网上类似的问题,大部分的解决方案是将Spyder中Ipython控制台的绘图一栏中BackEnd设置成自动或是qt5,但是我按此进行操作后,仍然不能显示动图。

但是奇怪的是,在一顿瞎操作后(我将封装的显示动画的代码段去除封装),这时候Spyder也能显示动图了

# 创建动画图形
import matplotlib.pyplot as plt
from matplotlib import animation

def create_circle():
    circle = plt.Circle((0,0),radius = 0.5)
    return circle

def update_radius(i, circle):
    circle.radius = i * 0.5
    return circle

# 貌似底下这段代码封装在函数里,Spyder无法动态显示(python自带的idle可以),不封装则可以动态显示
fig = plt.gcf()
ax = plt.axes(xlim = (-10, 10), ylim = (-10, 10))
ax.set_aspect('equal') 
circle = create_circle()
ax.add_patch(circle)
anim = animation.FuncAnimation(fig, update_radius,fargs = (circle,),frames = 30, interval = 50)
plt.title('Simple Circle Animation')
plt.show()

虽然误打误撞,但还是没明白为什么上述那段代码段的封装会影响Spyder的动图显示,明明在python自带的idle中运行不受影响,而在Spyder中运行却有问题

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值