Bry*_*ord 7 python animation matplotlib matplotlib-basemap
我创建了一个小程序,使用NHL城市,然后绘制球队整个赛季的路线。
产生的图形混乱:
因此,我想到了一个有趣的想法,那就是如果我对飞行路线进行动画处理,就像在观看印第安纳·琼斯的电影一样,那条线从一个点延伸到另一个。
通过查看其他matplotlib示例,我的理解是,animation函数接受一个函数,计算其输出,然后更新图形。我不知道这怎么可能,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)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |