一个步骤的 Matplotlib 动画
Matplotlib animation of a step
我正在创建阶跃函数的 Matplotlib 动画。我正在使用以下代码...
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.step([], [])
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 2, 10)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=100, interval=20, blit=True)
plt.show()
它有点像我想要的(类似于下面的 gif),但不是值是恒定的并且随时间滚动,每个步骤都是动态的并且上下移动。如何改变我的代码来实现这种转变?
step
显式绘制输入数据点之间的步长。它永远无法绘制部分 "step".
你想要一个中间有 "partial steps" 的动画。
不是使用 ax.step
,而是使用 ax.plot
,而是通过绘制 y = y - y % step_size
来制作一个阶梯系列。
换句话说,类似于:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000) # Using a series of 1000 points...
y = np.sin(x)
# Make *y* increment in steps of 0.3
y -= y % 0.3
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
注意开头和结尾的部分"steps"
将此合并到您的动画示例中,我们会得到类似于:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [])
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 2, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
y -= y % 0.3
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=100, interval=20, blit=True)
plt.show()
我正在创建阶跃函数的 Matplotlib 动画。我正在使用以下代码...
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.step([], [])
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 2, 10)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=100, interval=20, blit=True)
plt.show()
它有点像我想要的(类似于下面的 gif),但不是值是恒定的并且随时间滚动,每个步骤都是动态的并且上下移动。如何改变我的代码来实现这种转变?
step
显式绘制输入数据点之间的步长。它永远无法绘制部分 "step".
你想要一个中间有 "partial steps" 的动画。
不是使用 ax.step
,而是使用 ax.plot
,而是通过绘制 y = y - y % step_size
来制作一个阶梯系列。
换句话说,类似于:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000) # Using a series of 1000 points...
y = np.sin(x)
# Make *y* increment in steps of 0.3
y -= y % 0.3
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
注意开头和结尾的部分"steps"
将此合并到您的动画示例中,我们会得到类似于:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [])
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 2, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
y -= y % 0.3
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=100, interval=20, blit=True)
plt.show()