我创建了一个小程序,它接管了一个NHL城市,然后绘制了整个赛季团队旅行的路径。
生成的图形很乱:
所以我认为如果我给飞行路径制作动画会很有趣,就像看一部印第安纳琼斯电影一样,这条线从一个点到另一个点。
通过查看其他matplotlib示例我的理解是动画函数接受函数,计算它的输出,然后更新图形。我不知道drawgreatcircle
如何做到这一点,因为每当我打电话给我时,我都会得到完整的一行。
关于我如何处理这个问题的任何想法?
以下是
示例代码中的示例图片import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
fig = plt.figure(figsize=(10, 10))
m = Basemap(projection='merc', resolution=None,
llcrnrlon=-125, llcrnrlat=25, # LL = lower left
urcrnrlon=-60, urcrnrlat=55) #UR = upper right
m.etopo(scale=0.5, alpha=0.5)
# Ottawa to Anaheim
# Ottawa
lat1 = 45.4215
lon1 = -75.6972
# Anaheim
lat2 = 33.8353
lon2 = -117.9145
m.drawgreatcircle(lon1,lat1,lon2,lat2)
答案 0 :(得分:2)
drawgreatcicle
返回matplotlib line2D
,可以使用get_data
从中获取数据。因此,想法是绘制大圆圈,获取数据,然后删除它。使用这些数据,可以执行动画,迭代数组。
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import matplotlib.animation
fig = plt.figure(figsize=(6, 4))
m = Basemap(projection='merc', resolution=None,
llcrnrlon=-125, llcrnrlat=25, # LL = lower left
urcrnrlon=-60, urcrnrlat=55) #UR = upper right
m.etopo(scale=0.5, alpha=0.5)
# Ottawa to Anaheim
# Ottawa
lat1 = 45.4215
lon1 = -75.6972
# Anaheim
lat2 = 33.8353
lon2 = -117.9145
line, = m.drawgreatcircle(lon1,lat1,lon2,lat2)
x,y = line.get_data()
line.remove()
del line
line, = plt.plot([],[])
def update(i):
line.set_data(x[:i], y[:i])
ani = matplotlib.animation.FuncAnimation(fig, update, frames=len(x), interval=100)
ani.save(__file__+".gif", writer="imagemagick", fps=10)
plt.tight_layout()
plt.show()