Логика управления для отображения значений раскрывающегося списка — графическое тиреPython

Программы на Python
Anonymous
Логика управления для отображения значений раскрывающегося списка — графическое тире

Сообщение Anonymous »

Есть ли способ фильтровать или маскировать значения в раскрывающейся панели тире на основе отдельной логики управления. Например, используя приведенный ниже пример, я хочу отображать значения для A только в том случае, если он выбран. Я могу контролировать это на диаграмме, при этом A будет единственным отображаемым значением.
Однако раскрывающийся список не отражает значения на диаграмме.
  • Если A выбран первым, остальные значения в раскрывающемся списке должны быть заблокированы или удалены до тех пор, пока A не будет очищен.< /p>
  • Если A выбран после отдельных значений, то A должен быть единственным элемент в раскрывающемся меню, и эти значения затем следует заблокировать или удалить до тех пор, пока A не будет очищен.
Можно ли этого добиться с помощью сюжетного тире?
import dash
from dash import dcc
from dash import html
from dash.dependencies import Input, Output
import dash_bootstrap_components as dbc
import plotly.express as px
import pandas as pd

df = pd.DataFrame({
'Type': ['A','B','C','D','E','F'],
})

N = 300
df = pd.concat([df] * N, ignore_index=True)

df['TIMESTAMP'] = pd.date_range(start='2024/01/01 07:36', end='2024/01/30 08:38', periods=len(df))

df['DATE'], df['TIME'] = zip(*[(d.date(), d.time()) for d in df['TIMESTAMP']])
df['DATE'] = pd.to_datetime(df['DATE'], format='%Y-%m-%d')

external_stylesheets = [dbc.themes.SPACELAB, dbc.icons.BOOTSTRAP]

app = dash.Dash(__name__, external_stylesheets = external_stylesheets)

filter_box = html.Div(children=[
html.Div(children=[
dcc.Dropdown(
id = 'Type',
options = [
{'label': x, 'value': x} for x in df['Type'].unique()
],
value = ['A'],
multi = True,
clearable = True,
style = {'display': 'inline-block','margin':'0.1rem'}
),
], className = "vstack gap-1 h-100",
)
])

app.layout = dbc.Container([
dbc.Row([
dbc.Col([
dbc.Row([
dbc.Col(html.Div(filter_box),
),
]),
]),
dbc.Col([
dbc.Row([
dcc.Graph(id = 'date-bar-chart'),
]),
])
])
], fluid = True)

@app.callback(
Output('date-bar-chart', 'figure'),
[Input('Type','value'),
])

def chart(value_type):

#force A to be the sole value if selected
if 'A' in value_type:
value_type = ['A']
else:
value_type = value_type

dff = df[df['Type'].isin(value_type)]

df_count = dff.groupby(['DATE','Type'])['DATE'].count().reset_index(name = 'counts')

type_fig = px.bar(x = df_count['DATE'],
y = df_count['counts'],
color = df_count['Type']
)
return type_fig

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


Подробнее здесь: https://stackoverflow.com/questions/783 ... lotly-dash

Вернуться в «Python»