Как создать динамический сюжет matplotlib на карте-карте? - PullRequest
0 голосов
/ 03 июля 2019

Я создаю программу, которая отображает путешествие корабля из набора данных со значениями широты и долготы.У меня проблема с «динамически обновляемой» частью.

Я делаю все это на Jupyter (python), и, к сожалению, я не могу поделиться своим набором данных.Я попытался сделать обычный динамический сюжет matplotlib согласно различным путеводителям онлайн, но это действительно не сработало.Больше всего времени я пытался найти в строке с xdata и ydata, которые обновляются каждые 0,1 с, но это не учитывает тот факт, что на всех моих графиках должен быть применен transform = ccrs.Geodetic.

fig=plt.figure(figsize=[20,10])#create figure with matplotlib
ax1=fig.add_subplot(1,2,1,projection=ccrs.SouthPolarStereo())#add a subplot using the cartopy SouthPolarStereo
fig.subplots_adjust(bottom=0.05, top=0.95,left=0.04, right=0.95, wspace=0.02)#adjust size
ax1.set_extent([-180,180,-180,-55],ccrs.PlateCarree())#show only below 55S lat
ax1.gridlines()
ax1.add_feature(cfeature.LAND)
ax1.add_feature(cfeature.OCEAN)
ax1.coastlines()
#adding some features to the map
#plt.plot("LONVAL","LATVAL",color="green",marker="o",transform=ccrs.Geodetic())
xdata=[]
ydata=[]
#empty x and y data
line,=ax1.plot(xdata,ydata,"r-")#line

for vals in latlong.itertuples():#latlong is a dataframe from my dataset with julian day, latitude and longitude
    jday,lat,lon=vals[1],vals[2],vals[3]
    xdata.append(lon)
    ydata.append(lat)
#append the x and y data with the lat and lon for that iteration
    line.set_xdata(xdata)
    line.set_ydata(ydata)
    plt.draw()
    plt.pause(1e-17)
    time.sleep(0.1)
#set x and y data and draw it. supposedly.
    #plt.plot(lon,lat,color="green",marker="o",transform=ccrs.Geodetic())
    #print(lat,lon)
#the above two lines work but just make me a static image.
#    print(xdata,ydata)
plt.show()

Ожидаемый результат - медленная линия типа анимации, но вместо этого она не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...