2014-01-18 142 views
1

我使用底图来绘制地图上的一些点,并且我想为其添加任何种类的动画。它根本没有任何用处,只要它是一个动画就好。Matplotlib底图动画

这是我目前必须使地图,

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.animation as animation 
map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0, 
      lat_0=0, lon_0=-130) 
map.drawcoastlines() 
map.drawcountries() 
map.fillcontinents(color = 'gray') 
map.drawmapboundary() 
map.drawmeridians(np.arange(0, 360, 30)) 
map.drawparallels(np.arange(-90, 90, 30)) 

x,y = map(lons, lats) 
map.plot(x, y, 'ro', markersize=4) 


plt.show() 

回答

5

返工从here一些代码,以适应

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.animation as animation 
my_map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0, 
      lat_0=0, lon_0=-130) 
my_map.drawcoastlines() 
my_map.drawcountries() 
my_map.fillcontinents(color = 'gray') 
my_map.drawmapboundary() 
my_map.drawmeridians(np.arange(0, 360, 30)) 
my_map.drawparallels(np.arange(-90, 90, 30)) 

x,y = my_map(0, 0) 
point = my_map.plot(x, y, 'ro', markersize=5)[0] 

def init(): 
    point.set_data([], []) 
    return point, 

# animation function. This is called sequentially 
def animate(i): 
    lons, lats = np.random.random_integers(-130, 130, 2) 
    x, y = my_map(lons, lats) 
    point.set_data(x, y) 
    return point, 

# call the animator. blit=True means only re-draw the parts that have changed. 
anim = animation.FuncAnimation(plt.gcf(), animate, init_func=init, 
           frames=20, interval=500, blit=True) 

plt.show()