Вставить диаграмму hbar bokeh в приложение flask, используя функцию - PullRequest
0 голосов
/ 22 февраля 2020

Я разрабатываю приложение flask с использованием bokeh и pandas и хочу преобразовать приведенный ниже скрипт hbar в функцию, чтобы я мог использовать его в похожих фреймах данных,

это мой код

Top_five_all_types_bar_source = ColumnDataSource(Top_five_all_types)
Top_five_all_types_path = Top_five_all_types['con_path'].tolist()
Top_five_all_types_count = Top_five_all_types['Sub_Child_Incident_id']

f_Top_five_all_types= figure(
    y_range=Top_five_all_types_path,
    plot_width =1000,
    plot_height = 300,
    x_axis_label = 'Top Five',


)

f_Top_five_all_types.hbar(
    y='con_path',
    right='Sub_Child_Incident_id',
    left=0,
    height = 0.4,
    source= Top_five_all_types_bar_source
)

hover = HoverTool()
hover.tooltips = """
    <div>Path: @con_path</div>
    <div>Count: @Sub_Child_Incident_id</div>
    <div>Weight: @weight</div>
"""
f_Top_five_all_types.add_tools(hover)

Top_five_all_types_hbar_js, Top_five_all_types_hbar_div = components(f_Top_five_all_types)

Я пробовал эту функцию, но она выдает ошибку. Top_five_all_types_hbar_ js не определено

def HBarChart (source,con_path_col,srs_col,weight, labels, script, div):

    top_five_source = ColumnDataSource(source)
    top_five_path_list = source[con_path_col].tolist()
    top_five_count = source[srs_col]

    f = figure(
    y_range=top_five_path_list,
    plot_width =1000,
    plot_height = 300,
    x_axis_label = labels,
    )

    f.hbar(
    y=con_path_col,
    right=srs_col,
    left=0,
    height = 0.4,
    source= top_five_source
    )

    hover = HoverTool()
    hover.tooltips = """
    <div>Path: @con_path_col</div>
    <div>Count: @srs_col</div>
    <div>Weight: @weight</div>
    """
    f.add_tools(hover)

    script, div = components(f)

    return script, div


Top_five_all_types_hbar = HBarChart (
    Top_five_all_types,
    'con_path',
    'Sub_Child_Incident_id',
    'weight',
    'Top Five',
    Top_five_all_types_hbar_js,
    Top_five_all_types_hbar_div
    )

Результат должен быть таким, как на изображении ниже Hbar Image

1 Ответ

1 голос
/ 22 февраля 2020

Придуманная вами функция принимает script и div и никогда не использует их. Вместо этого он создает и возвращает их. Попробуйте изменить подпись на

def HBarChart (source,con_path_col,srs_col,weight, labels):
    ...

и использовать на

Top_five_all_types_hbar_js, Top_five_all_types_hbar_div = HBarChart (
    Top_five_all_types,
    'con_path',
    'Sub_Child_Incident_id',
    'weight',
    'Top Five'
    )
...