Самое важное, что здесь нужно добавить, это то, что ваша функция heat_map()
должна return
вашего графика. Я думаю, что это то, чего не хватает.
Трудно воссоздать ваш пример, так как нет данных образца, но вот пример, который работает. Я использовал hvplot вместо seaborn для создания интерактивной тепловой карты.
Пример кода:
# import libraries
import numpy as np
import pandas as pd
import hvplot.pandas
import panel as pn
pn.extension()
# create sample data
df = pd.DataFrame({
'date': pd.date_range(start='01-01-2020', end='31-12-2020'),
'status': np.random.choice(['confirmed', 'bedridden', 'recovered'], 366),
'status2': np.random.choice(['A', 'B', 'C'], 366),
'value': np.random.rand(366) * 100
})
types = ['confirmed', 'bedridden', 'recovered']
# you need to return your plot to get the interaction
def plot_heatmap(chosen_type):
df_selected = df[df['status']==chosen_type]
# hvplot is handy for creating interactive plots
heatmap = df_selected.hvplot.heatmap(x='date', y='status2', C='value')
return heatmap
# show your interactive plot with dropdown
pn.interact(plot_heatmap, chosen_type=types)
В качестве примечания, с hvplot вам не понадобится весь этот дополнительный код, чтобы получить приличную интерактивную тепловую карту с раскрывающимся списком. Вы можете просто сделать:
df.hvplot.heatmap(x='status2', y='date', C='value', groupby='status')
Дополнительная информация о pn.interact ():
https://panel.holoviz.org/getting_started/index.html
Итоговый интерактивный график с раскрывающимся списком: