Я работаю над простым сценарием для определения местоположения МКС на карте мира с использованием картопий. Вот код и его вывод
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()
Эта часть работает нормально, а вот вывод.
![Currently ISS is near Australia](https://i.stack.imgur.com/6KI63.png)
Теперь, что я хочу, чтобы через каждые 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)