我正在使用简单的脚本,使用Cartopy在世界地图上定位ISS。这是代码及其输出
import requests
from datetime import datetime
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
# finding the current location
url = 'http://api.open-notify.org/iss-now.json'
r = requests.get(url)
data = r.json()
dt = data['timestamp']
lat = data['iss_position']['latitude']
lon = data['iss_position']['longitude']
print('Date and time : ',datetime.fromtimestamp(dt))
print('Latitude :',lat)
print('Longitude :',lon)
# plotting the location on map
plt.figure(figsize=(10,8))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.stock_img()
# lon lat
plt.scatter(float(lon),float(lat),color='blue', marker='o')
plt.show()
这部分工作正常,这是输出。
现在,我想要的是每30秒向url发出一个请求,然后在地图上绘制该位置以清除先前的位置。是否可以用matplotlib做。我对matplotlib不太了解。请帮助。
我当前的代码每次都会创建带有散点图的新图。我只希望删除当前位置和先前位置的一张地图。
这是我当前的代码
import requests
import matplotlib.pyplot as plt
import time
import cartopy.crs as ccrs
url = 'http://api.open-notify.org/iss-now.json'
plt.figure(figsize=(10,8))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.stock_img()
plt.ion()
while True:
r = requests.get(url)
data = r.json()
dt = data['timestamp']
lat = data['iss_position']['latitude']
lon = data['iss_position']['longitude']
plt.scatter(float(lon),float(lat),color='blue', marker='o')
plt.show()
time.sleep(30)
matplotlib.animation.FuncAnimation