python – 如何为matplotlib的drawgreatcircle函数设置动画?

我创建了一个小程序,它占据了一个NHL城市,然后画出了整个赛季团队旅行的路径.

生成的图形很乱:

《python – 如何为matplotlib的drawgreatcircle函数设置动画?》

所以我认为如果我给飞行路径制作动画会很有趣,就像观看印第安纳琼斯电影一样,这条线从一个点到另一个点.

通过查看其他matplotlib示例我的理解是动画函数接受函数,计算它的输出,然后更新图形.我不知道如何使用drawgreatcircle这是可能的,因为每当我调用它时,我都会得到一条完整的线.

关于我如何处理这个问题的任何想法?

以下是示例代码中的示例图像

《python – 如何为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)

最佳答案 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()

《python – 如何为matplotlib的drawgreatcircle函数设置动画?》

点赞