Доступ к состоянию трассировки в Plotly Dash

Я использую Plotly Dash для построения гистограммы с накоплением с 3 значениями трассировки.

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

например, у меня есть фреймворк:

Item    Status    Value
1        First    2000
1        Second   3490
1        Third    542    
2        First    641    
2        Second    564        
3        First      10

Мои следы - это 3 значения (первое, второе, третье), относящиеся к линейному процессу, где каждое значение является статусом, обозначающим продвижение элемента.

Мое намерение состоит в том, чтобы иметь возможность выбирать статусы по мере продвижения вниз, чтобы отображались только те элементы, которые продвинулись до определенного шага.

По мере того, как я выбираю более сложные состояния в легенде трассировки, мои нанесенные на график значения x должны упасть, поскольку они продвигаются гораздо реже, даже если все они разделяют большинство статусов.

Единственное решение, которое я могу придумать, - это сделать флажки для каждого значения трассировки и использовать эти входные данные в обратном вызове, но это кажется избыточным для встроенной функции трассировки выбора / отмены выбора.


person johndoe348    schedule 29.01.2019    source источник


Ответы (1)


Вы ищете что-то подобное?

Код:

import dash
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import plotly.graph_objs as go
import pandas as pd

app = dash.Dash(__name__)

df = pd.DataFrame({'Item': [1, 1, 1, 2, 2, 3],
                   'Status': ["First", "Second", "Third",
                              "First", "Second", "First"],
                   'Value': [2000, 3490, 542, 641, 564, 10]})

colors = {
    'background': '#111111',
    'background2': '#FF0',
    'text': '#7FDBFF'
}
df1 = df.loc[df["Status"] == "First"]
df2 = df.loc[df["Status"] == "Second"]
df3 = df.loc[df["Status"] == "Third"]
trace1 = go.Bar(
                x=df1["Item"],
                y=df1["Value"],
                name='First',
)
trace2 = go.Bar(
                x=df2["Item"],
                y=df2["Value"],
                name='Second',
)
trace3 = go.Bar(
                x=df3["Item"],
                y=df3["Value"],
                name='Third',
)

app.layout = html.Div(children=[
        html.Div([
            html.H5('Your Plot'),
            dcc.Graph(
                id='cx1',
                figure=go.Figure(data=[trace1, trace2, trace3],
                                 layout=go.Layout(barmode='stack')))],)])


if __name__ == '__main__':
    app.run_server(debug=True)

Вывод:  Стержень сложен

person Dmitriy Kisil    schedule 21.02.2019