【问题标题】:Animate sine function with red dot用红点动画正弦函数
【发布时间】:2017-04-22 12:41:13
【问题描述】:

我正在尝试为正在绘制的正弦函数设置动画,但在新绘制的图形部分上有一个红点。我已经画好了,但是红点一直被绘制了好几次。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

X = np.linspace(0, 2*np.pi, 200)
Y = np.sin(X)


fig, ax = plt.subplots(1,1)
ax.set_xlim([0, 6*np.pi])
ax.set_ylim([-1.1, 1.1])

sinegraph, = ax.plot([], [])

def sine(i):
    sinegraph.set_data(X[:i],Y[:i])
    ax.plot(X[i], Y[i], 'o', color='red')

anim = animation.FuncAnimation(fig, sine, frames=400, interval=50)
plt.show()

基本上我需要擦除并重绘每一帧的红点。

【问题讨论】:

  • 添加plt.cla() 并在正弦函数中设置轴限制?您想在制作动画时只显示一个红色圆圈吗?

标签: python matplotlib graph


【解决方案1】:

就像更新线一样,您可以使用先前定义的线图的set_data() 方法更新红点。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

X = np.linspace(0, 2*np.pi, 100)
Y = np.sin(X)

fig, ax = plt.subplots(1,1)
ax.set_xlim([0, 2*np.pi])
ax.set_ylim([-1.1, 1.1])

sinegraph, = ax.plot([], [])
dot, = ax.plot([], [], 'o', color='red')

def sine(i):
    sinegraph.set_data(X[:i],Y[:i])
    dot.set_data(X[i],Y[i])

anim = animation.FuncAnimation(fig, sine, frames=len(X), interval=50)
plt.show()

【讨论】:

    【解决方案2】:

    在这里,我对您的代码进行了以下更改,我相信它现在可以按照您的意图进行。

    我添加了绘制指针的标记函数。

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
    
    X = np.linspace(0, 2*np.pi, 200)
    Y = np.sin(X)
    
    
    fig, ax = plt.subplots(1,1)
    ax.set_xlim([0, 6*np.pi])
    ax.set_ylim([-1.1, 1.1])
    
    sinegraph, = ax.plot([], [])
    
    def marker(i):
        ax.plot(X[i-1],Y[i-1],'o',color='red',markersize=5)
        ax.plot(X[i],Y[i],'o',color='black',markersize=5)
    
    
    def sine(i):
        sinegraph.set_data(X[:i],Y[:i])
        ax.plot(X[i], Y[i], 'o', color='red',markersize=5)
        if i>0:
            marker(i)
    
    anim = animation.FuncAnimation(fig, sine, frames=400, interval=50)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多