情节不随下拉变化select
Plot doesnot change with drop down select
我正在尝试为仪表板构建交互式绘图。数据在 pandas 数据框 state_df
中。
ty=['Confirmed','Bedridden','Recovered']
def type_tt(need_type):
need=[]
need.append(need_type)
my_df=state_df[state_df.Status.isin(need)]
my_df=my_df.set_index('Date')
return my_df
def heat_map(types):
num=10# 10 day
my_df=type_tt(types)
sns.heatmap((my_df.drop('Status',axis=1)).tail(num)[top_14],cmap='Blues', linewidths=0.1)
#df.style.background_gradient(cmap='Blues')
#heat_map(types_op)
app7=pn.interact(heat_map,types=ty)
app7
这提供了一个带有选项的下拉菜单
但是当我从下拉菜单中更改选项时,情节并没有改变。
我尝试查看链接文档,但没有任何效果。
有线索吗?
这里最重要的是你的函数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
生成的带有下拉列表的交互图:
我正在尝试为仪表板构建交互式绘图。数据在 pandas 数据框 state_df
中。
ty=['Confirmed','Bedridden','Recovered']
def type_tt(need_type):
need=[]
need.append(need_type)
my_df=state_df[state_df.Status.isin(need)]
my_df=my_df.set_index('Date')
return my_df
def heat_map(types):
num=10# 10 day
my_df=type_tt(types)
sns.heatmap((my_df.drop('Status',axis=1)).tail(num)[top_14],cmap='Blues', linewidths=0.1)
#df.style.background_gradient(cmap='Blues')
#heat_map(types_op)
app7=pn.interact(heat_map,types=ty)
app7
这提供了一个带有选项的下拉菜单
但是当我从下拉菜单中更改选项时,情节并没有改变。 我尝试查看链接文档,但没有任何效果。
有线索吗?
这里最重要的是你的函数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
生成的带有下拉列表的交互图: