首页 > 解决方案 > 根据小部件更新 vbar x 轴

问题描述

我正在尝试使用散景构建一个简单的应用程序,当在下拉菜单中选择新变量时,直方图会更新。直方图确实会更新,但不会更新 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)

谢谢您的帮助!

标签: widgetbokeh

解决方案


推荐阅读