Как взаимодействовать с plotly.figure_factory hover?

#python #hover #plotly #mapbox #figure

#питон #наведите курсор #сюжетно #картографический ящик #рисунок

Вопрос:

Я попробовал следующий код:

 import plotly.io as pio
import plotly.express as px
import json
import pandas as pd
import plotly.graph_objects as go 
import plotly.figure_factory as ff
import plotly.express as px


df = px.data.carshare()

fig = go.Figure() 


app = dash.Dash()
#fac figurile
fig  = ff.create_hexbin_mapbox(df,lat = 'centroid_lat', lon = 'centroid_lon',nx_hexagon = 10,color = 'car_hours',
                               labels = {'color':'Point Count '},

                               opacity = 0.5)


fig.update_layout(mapbox_style="carto-darkmatter")
fig.update_layout(margin=dict(b=0, t=0, l=0, r=0))

fig.show()
 

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

И я хочу изменить наведение курсора так, чтобы он показывал мне только значение с плавающей запятой только с первым десятичным знаком при наведении курсора, и я также хочу иметь возможность отображать что-то после отображения значения. Например, значение при наведении должно быть ‘Количество точек = 1019,9 автомобилей в час. К сожалению, документация не очень помогает.

Ответ №1:

Мне кажется, что вашим лучшим вариантом ff.create_hexbin_mapbox было бы настроить его непосредственно через:

 fig.data[0].hovertemplate = 'Point Count =%{z:,.1f}<extra>Cars per hour</extra>'
 

Который превратит это:

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

… в этот:

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

Полный код

 import plotly.io as pio
import plotly.express as px
import json
import pandas as pd
import plotly.graph_objects as go 
import plotly.figure_factory as ff
import plotly.express as px


df = px.data.carshare()

fig = go.Figure() 


# app = dash.Dash()
#fac figurile
fig  = ff.create_hexbin_mapbox(df,lat = 'centroid_lat', lon = 'centroid_lon',nx_hexagon = 10,color = 'car_hours',
                               labels = {'color':'Point Count '},

                               opacity = 0.5)


fig.update_layout(mapbox_style="carto-darkmatter")
fig.update_layout(margin=dict(b=0, t=0, l=0, r=0))
fig.data[0].hovertemplate = 'Point Count =%{z:,.1f}<extra>Cars per hour</extra>'
fig.show()