Отображение путей с помощью 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)