Я пытаюсь динамически изменить форматирование моего тика по оси Y и форматирование всплывающей подсказки на основе того, что выбрано в раскрывающемся списке Holoviews.Я решил, что смогу сделать это в finalize_hooks.Поскольку я не знаю, как проверить то, что было выбрано в раскрывающемся списке, я использовал значение заголовка, чтобы определить это.Кажется, это работает нормально, хотя я уверен, что может быть более элегантное решение, о котором я не знаю.Кроме того, я могу изменить форматирование тиков, но значение наведения не меняется в зависимости от вышеуказанного метода.Смотрите пример кода ниже.Всплывающая подсказка всегда показывает значение 1, а не значение 2 независимо от того, какую страну я выбираю.Пожалуйста, сообщите, если есть способ исправить это.
%%opts Bars [show_grid=True width=1400 height=400 xrotation=0] {+framewise}
macro_df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\t')
key_dimensions = [('year', 'Year'), ('country', 'Country')]
value_dimensions = [('unem', 'Unemployment'), ('capmob', 'Capital Mobility'),
('gdp', 'GDP Growth'), ('trade', 'Trade')]
macro = hv.Table(macro_df, key_dimensions, value_dimensions)
hover = HoverTool(tooltips=[('year', '@year'),
('Value', '@unem{0.000%}')])
def apply_formatter(plot, element):
p = plot.handles['plot']
if 'Austria' in p.title.text:
plot.handles['yaxis'].formatter = NumeralTickFormatter(format="0")
p.hover[0].tooltips[1] = ('Value1', '@unem{0.0%}')
else:
plot.handles['yaxis'].formatter = NumeralTickFormatter(format="0.0%")
p.hover[0].tooltips[1] = ('Value2', '@unem{0.00%}')
bars = macro.to(hv.Bars, kdims='year', vdims=['unem']).opts(plot=dict(tools=[hover], finalize_hooks=[apply_formatter]))
баров