Python Matplotlib动画

Python Matplotlib动画,python,animation,matplotlib,Python,Animation,Matplotlib,亲爱的StackOverloow会员您好, 我在理解matplotlib的FuncAnimation模块时遇到问题。你介意帮我一点忙吗?我有两个问题: 为什么dieinit和animate函数在仅返回绘图后都需要逗号 为什么我的代码不更新时间文本?如果我让它在每个动画之后打印t,我会在控制台中正确地添加一个,但文本不会在绘图中更新 1) 我不太清楚你的意思。在init和animate中,您需要同时返回PLOT和time\u text,因此您可以用逗号分隔它们,这样每个函数都将返回一个元组 对于

亲爱的StackOverloow会员您好, 我在理解matplotlib的FuncAnimation模块时遇到问题。你介意帮我一点忙吗?我有两个问题:

  • 为什么die
    init
    animate
    函数在仅返回
    绘图后都需要逗号
  • 为什么我的代码不更新时间文本?如果我让它在每个动画之后打印t,我会在控制台中正确地添加一个,但文本不会在绘图中更新
  • 1) 我不太清楚你的意思。在
    init
    animate
    中,您需要同时返回
    PLOT
    time\u text
    ,因此您可以用逗号分隔它们,这样每个函数都将返回一个元组

    对于
    PLOT中的“挂起”逗号,=sub.PLOT([],[])
    sub.PLOT
    返回一个包含单个元素的列表,即
    matplotlib.lines.Line2D
    对象。
    绘图,
    正在解包此单元素列表。因此,您也可以这样做:

    PLOT = sub.plot([],[])[0]
    
    获取元素

    2) 您的代码确实更新了
    time\u text
    ,您只是把它画出了图形的边界。例如改变:

    time_text = sub.text(1,1,"",transform = sub.transAxes, ha="right")
    
    致:


    使其显示在右下角,或<代码> 0.5,0.5 < /代码>以使其显示在屏幕中间。Python元组中的

    < P>使用括号和逗号编写,例如(3,2)。 这是一个2元组。一个元组应该是长度为1的(2,)。这与完全没有定义长度的int 2不同。 注意:()是内容为空的0元组

    在这种情况下,函数返回长度为1的枚举,因此 省略逗号将使绘图成为可枚举的。用逗号符号 元组图的内容与返回值的内容相匹配


    作业中可以省略括号,因此绘图与(绘图)相同。

    其他答案不能完全回答第一个问题

    仅当使用
    blit=True
    时,才严格需要
    init
    animate
    的返回语句。这些函数将返回一组艺术家,以更新动画。有了两位艺术家,回归可能看起来像

    return artist1, artist2
    # or 
    return [artist1, artist2]
    
    如果一个艺术家需要更新,你必须记住仍然需要一个iterable。在单个艺术家之后使用逗号是使函数返回iterable的最简单方法

    return artist1,
    # or 
    return [artist1]
    

    好的,我明白了,非常感谢。关于逗号的事情:例如,如果我完全省略了时间显示,只返回新的绘图数据:
    returnplot
    我会得到一个错误。但是如果我返回
    returnplot,
    它会工作。这是为什么?
    PLOT,
    解压
    PLOT
    中的内容。在控制台上尝试此操作:
    a,=[1]
    。然后打印
    a
    return artist1, artist2
    # or 
    return [artist1, artist2]
    
    return artist1,
    # or 
    return [artist1]