Преобразование проанализированных строковых значений в число с плавающей запятой

Используя Geopandas с боке, я визуализирую набор данных ГИС, который также имеет отметки местоположения. Значения высоты имеют тип Double, происходящий из загружаемого шейп-файла, например. «1382.770000».

При отображении этих значений пользователю (скажем, с помощью HoverTool) они представлены в экспоненциальной форме, например. для приведенного выше примера 1.382e+3.

Поскольку код ориентирован на пользователя/интерактивен, я хотел бы отображать эти цифры в упрощенном формате с плавающей запятой - можно ли этого добиться?

Я пытался:

hover = HoverTool (tooltips = [('Elevation', float('@elev')])

Однако это приводит к ValueError: не удалось преобразовать строку в число с плавающей запятой: '@elev'

Пример кода:

import pandas as pd
import geopandas as gpd
import json

import bokeh.io
from bokeh.io import output_notebook, show, output_file
from bokeh.plotting import figure, show
from bokeh.models import GeoJSONDataSource, HoverTool

# prevent Bokeh from savig sketch into file / opening in a new tab
bokeh.io.reset_output()
bokeh.io.output_notebook()

shapefile = 'data/USA Counties 20m/cb_2017_us_county_20m_with_cZone_USAF_coordinates_elevations.shp'

#Read shapefile using Geopandas
gdf = gpd.read_file(shapefile)[['CZONE', 'NAME', 'geometry','USAF','xcoord','ycoord','ELEV_IN_M']]

#Rename columns.
gdf.columns = ['cZone', 'Name', 'geometry','USAF','Long','Lat','elev']

#Reset index
gdf = gdf.reset_index(drop=True)

#Read data to json.
json_raw = json.loads(gdf.to_json())

#Convert to String like object.
json_data = json.dumps(json_raw)

#Input GeoJSON source that contains features for plotting.
geosource = GeoJSONDataSource(geojson = json_data)


#Add hover tools
hover = HoverTool(tooltips = [ ('Climate Zone','@cZone'),
                               ('County','@Name'),
                               ('USAF','@USAF'),
                               ('elev','@elev')])

#Create figure object.
p = figure(title = 'USA Climate Zone Map by County', plot_height = 450 , plot_width = 800, toolbar_location = "below")
p.add_tools(hover)

#Add patch renderer to figure. 
p.patches('xs','ys', source = geosource, 
          line_color = 'black', line_width = 0.25, fill_alpha = 1)

# Display figure & widget
show(p)

шейп-файл доступен здесь


person Noam Naveh    schedule 09.04.2019    source источник
comment
Какую библиотеку вы используете для визуализации? Можете ли вы предоставить полный воспроизводимый пример кода?   -  person joris    schedule 09.04.2019
comment
Использование Боке для визуализации. Я обновил сообщение с дополнительной информацией, как было предложено   -  person Noam Naveh    schedule 11.04.2019


Ответы (1)


Вы можете использовать форматирование всплывающих подсказок следующим образом (Bokeh v1.1.0):

hover = HoverTool(tooltips = [ ('Climate Zone', '@cZone'),
                               ('County', '@Name'),
                               ('USAF', '@USAF'),
                               ('elev', '@{elev}{%0.3f}') ],
                  formatters = {'elev' : 'printf'} )

введите здесь описание изображения

person Tony    schedule 16.04.2019