Отображение путей с помощью Geoviews

Я пытаюсь использовать geoviews для отображения пути. Я могу заставить его отображать ТОЛЬКО точки:

import numpy as np
import geoviews as gv
import cartopy.crs as ccrs
import pandas as pd

hv.extension('bokeh')

coord_system = ccrs.UTM(17)

userLine = [[ 501386.89237725, 3026047.23276743],
 [ 502233.40219658, 3030363.86891928],
 [ 497065.22714886, 3031309.6654351 ],
 [ 499260.08171301, 3027147.9437062 ],
 [ 494678.08475863, 3026891.08691589],
 [ 494971.32963864, 3025188.1383645 ],
 [ 496475.86909916, 3025394.03293946],
 [ 496061.07730504, 3026116.58492655],
 [ 497530.90995815, 3026357.00292598]]

line_pd = pd.DataFrame(userLine, columns=['Longitude', 'Latitude'])
pressure = pd.DataFrame(np.arange(0,401,np.ceil(401/len(userLine))), columns=['Pressure'])
windspeed = pd.DataFrame(np.arange(0,201,np.ceil(201/len(userLine))), columns=['Max_Wind_Speed'])
alldata = pd.concat([line_pd,pressure,windspeed], axis=1)

gvdata = gv.Dataset(alldata, kdims=['Pressure','Max_Wind_Speed','Longitude','Latitude'])
hover = HoverTool(tooltips=[("Longitude", "@Longitude"), ("Latitude", "@Latitude"), ("Pressure","@Pressure"),("Max Wind Speed","@Max_Wind_Speed")])

%%opts Points (size=10 cmap='inferno') [tools=[hover] color_index=4]
gvdata.to(gv.Points, kdims=['Longitude', 'Latitude'], vdims=['Pressure','Max_Wind_Speed'], crs=coord_system)

Но то, что я действительно хочу, это путь. Тем не менее, когда я пытаюсь:

gvdata.to(gv.Path, kdims=['Longitude', 'Latitude'], crs=coord_system)

Я получаю сообщение об ошибке DataError: None of the available storage backends were able to support the supplied data format.

Я попытался переформатировать входные данные, но безуспешно. Я не уверен, что еще я мог делать неправильно.

1 ответ

Решение

.to Цель этого метода - дать вам возможность легко группировать многомерные данные. В этом конкретном примере у вас есть только два измерения (широта и долгота), поэтому нет необходимости использовать .to, В вашем конкретном примере этого должно быть достаточно для построения графика:

gv.Path([userLine], crs=coord_system)

Path типы в HoloViews могут быть созданы с использованием списка массивов, информационных кадров или словаря столбцов, так что это также будет работать:

line_pd = pd.DataFrame(userLine, columns=['Longitude', 'Latitude'])
gv.Path([line_pd], crs=coord_system)

Изменить: в вашем расширенном примере формат, который работает для меня, выглядит следующим образом:

%%opts Path (cmap='inferno') [tools=[hover] color_index='Max_Wind_Speed']
gv.Path([alldata], vdims=['Pressure','Max_Wind_Speed'], crs=coord_system)
Другие вопросы по тегам