Я пытаюсь создать простое приложение с боке, где гистограмма обновляется при выборе новой переменной в раскрывающемся меню. Гистограмма действительно обновляется, но не ось X (категории). Я читал похожие вопросы на разных форумах, но ни один из ответов не решил мои проблемы. Вот мой код:
def modify_doc(doc):
def make_dataset(var_name):
CountDf=pd.DataFrame(TrainData[var_name].value_counts()).reset_index()
CountDf.columns=['CATEGORY','COUNT']
#return(CountDf)
return(ColumnDataSource(CountDf))
def make_plot(src):
#p=figure(x_range=list(src.data['CATEGORY']))
p=figure(x_range=FactorRange(factors=list(src.data['CATEGORY'])))
p.x_range.factors = src.data['CATEGORY']
p.vbar(x='CATEGORY', top='COUNT', width=0.9, source=src)
p.xaxis.major_label_orientation = math.pi/2
return(p)
# Update function takes three default parameters
def update(attr, old, new):
new_src = make_dataset(new)
src.data.update(new_src.data)
p.x_range.factors = src.data['CATEGORY']
var_selection = Dropdown(label='Variable to plot:',menu=CatVarLst, value=CatVarLst[0])
var_selection.on_change('value',update)
controls = WidgetBox(var_selection)
initial_var=CatVarLst[0]
src=make_dataset(initial_var)
p = make_plot(src)
layout = column(controls, p)
doc.add_root(layout)
Спасибо за помощь!