У меня есть таблица данных Plotty, показывающая Pandas DataFrame. DataFrame имеет одну линейную диаграмму для каждого столбца во фрейме данных. На каждой линейной диаграмме есть одна линия для каждого идентификатора, представленного в данных. Я пытаюсь упростить сопоставление странно выглядящих графических данных с необработанными входными данными.
Я хочу иметь возможность щелкнуть точку данных (или еще лучше выбрать строку в ChartLegend), делая это приведет к тому, что DataTable будет фильтровать и отображать только строки, связанные с выбранным идентификатором.
Вот фрагмент кода, показывающий, как я создаю DataTable и диаграммы
def Make_PlottyFigures(df, xcol_name, device_type_dict, device_names, columns_to_plot):
figs = []
for col_i in range(0, len(columns_to_plot)):
figs.append(go.Figure())
#Go over each device, and add a trace for each column to the appropriate figure. We want each colun in its own figure
for device in device_names:
if df[df['id'] == device].shape[0] > 0:
axs_index = 0
for col in columns_to_plot:
figs[axs_index].add_trace(go.Scatter(x=df[xcol_name], y=df[df['id'] == device][col],
mode='lines+markers',
name=f"{device_type_dict[device]}-{device}"))
axs_index += 1
index = 0;
for col in columns_to_plot:
figs[index].update_layout(
title=f"{col}",
xaxis_title="",
yaxis_title="",
font=dict(
family="Courier New, monospace",
size=18,
color="#7f7f7f"
)
)
index += 1
return figs
def DASH_dataTable_from_pd(id, df):
return dash_table.DataTable(
id=f'datatable-{id}',
columns=[
{"name": i, "id": i, "deletable": False, "selectable": False} for i in df.columns
],
data=df.to_dict('records'),
editable=False,
filter_action="native",
sort_action="native",
sort_mode="multi",
column_selectable="single",
row_selectable="multi",
row_deletable=False,
selected_columns=[],
selected_rows=[],
page_action="native",
page_current= 0,
page_size= 10,
)
Я пробовал искать в Интернете для чего-то похожего, но ничего не нашел. https://dash.plotly.com/datatable/interactivity имеет пример «sorta», но в противоположном направлении (выбор в таблице выделяет эквивалентную запись данных диаграммы). https://dash-docs.herokuapp.com/interactive-graphing есть примеры того, как реагировать на события, которые меня интересуют, я просто застрял на том, как отфильтровать Таблицу от этих событий (также было бы неплохо сделать это выпускаемым)
Есть ли какие-нибудь сэмплы, которые я пропустил, или это совершенно очевидно, и я что-то упускаю