我正在尝试完成一些非常基本的事情。希望能找到一些指示!
我想画两个圆圈:一个停留在屏幕上,另一个迭代地变大。对于变化的那个,我本质上是想使用一个循环来绘制和擦除,以便在每次迭代时都绘制一个更大的圆圈(在看起来似乎第二个动画的圆圈正在增长的情况下完成效果)。以下是到目前为止我已经设法解决的问题。它会随着每个循环将第二个圆逐渐增大,但不会擦除。
import matplotlib as plt
plt.use('TkAgg')
import matplotlib.pyplot as plt
#Initialize a variable
CHANGE = 0.3
#Make static 1st circle
circle1 = plt.Circle((0.5, 0.5), 0.2, color='white')
fig, ax = plt.subplots()
plt.axis('off')
ax.add_artist(circle1)
fig.set_facecolor("black")
#Animate dynamic 2nd circle
def frange(start, stop, step):
i = start
while i < stop:
yield i
i += step
for step in frange(0, .6, .01):
circle2 = plt.Circle((0.5, 0.5), CHANGE, color='gray', fill=False)
ax.add_artist(circle2)
plt.draw()
plt.pause(.001)
#plt.cla( )
CHANGE = CHANGE + step
注意:我尝试将plt.cla()添加到循环中。通过这种方式,我可以擦除/重画第2圈,但它似乎覆盖了原始的第1圈,而不是使它们在同一图中可见。
~~~~~~~~~~~~~
A)每个循环应该是什么:
B)不删除时的外观:
(通过PycharmCE使用Python3.6.5)
答案 0 :(得分:1)
您应该简单地调用add_artist
类的set_radius
method,而不是多次调用remove()
和Circle
。这样会更有表现。
答案 1 :(得分:0)
根据ImportanceOfBeingEarnest的评论将点子连接起来,以便像我这样的新手出现:
在循环中添加了以下已加星号的代码行:
for step in frange(0, .6, .01):
circle2 = plt.Circle((0.5, 0.5), CHANGE, color='gray', fill=False)
ax.add_artist(circle2)
plt.draw()
plt.pause(.001)
**circle2.remove()**
CHANGE = CHANGE + step