【发布时间】:2017-12-27 18:24:07
【问题描述】:
我正在自学 python 数学动画,所以我什至不知道我所问的是否可以使用 matplotlib。我想要的是
(1) 轴从小开始,然后扩大。在此之后,我希望它
(2) 按顺序(一个接一个)而不是同时(同时)绘制两条线,这就是它正在做的事情。
我的代码在下面,除了我尝试扩展轴(充其量我的尝试没有使 python 崩溃)。
import time
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
#from matplotlib.animation import FuncAnimation
maxsize = 8
size = 1
fig = plt.figure(figsize=(maxsize, maxsize))
# fig will start at "size" if I ever figure out the animation
xmin = -10
xmax = 10
ymin = -10
ymax = 10
ax = plt.axes(xlim=(xmin, xmax), ylim=(ymin, ymax))
plt.axhline(linewidth=3, color='black')
plt.axvline(linewidth=3, color='black')
line, = ax.plot([], [], lw=2)
def init1():
line.set_data([], [])
return line,
def animate1(i):
x1 = np.linspace(-10, i/5 - 10, 1000)
y1 = -1*x1
line.set_data(x1, y1)
return line,
def init2():
line.set_data([], [])
return line,
def animate2(j):
x2 = np.linspace(0, j/10, 1000)
y2 = 2*x2
line.set_data(x2, y2)
return line,
plt.grid()
plt.xticks(np.arange(xmin, xmax+1, 1.0))
plt.yticks(np.arange(ymin, ymax+1, 1.0))
anim1 = animation.FuncAnimation(fig, animate1, init_func=init1,
frames=100, interval=20, blit=True)
plt.plot()
plt.show()
time.sleep(1)
anim2 = animation.FuncAnimation(fig, animate2, init_func=init2,
frames=100, interval=20, blit=True)
plt.plot()
plt.show()
所以我想我的问题是: 我想在 matplotlib 中做的事情是可能的吗?一?另一个?两个都? 如果是这样,我该怎么做。
【问题讨论】:
-
我不太清楚你想要什么;让我们试着澄清一下:
(1)for the axes to start off small then expand这是数字轴上的某种缩放效果吗?(2) plot two lines sequentially rather than concurrently您想在同一个图上绘制一条线,然后是另一条线(保留第一条线)?或者你想先展示一个情节,然后再展示第二个情节? -
(1) 我希望轴从小开始,假设 1" x 1" 然后增长到 8" x 8"。 (2) 我想在一个图上画一条线,暂停,然后在同一个图上画第二条线。
标签: python animation matplotlib