Проектирование продвинутой многостраничной аналитической панели
Создайте интерактивную панель с динамической фильтрацией и живыми KPI с использованием Panel.
Общий обзор руководства
В этом руководстве мы построим продвинутую многостраничную интерактивную панель с использованием Panel. Мы исследуем, как создавать синтетические данные, применять фильтры, визуализировать динамические временные ряды и даже моделировать обновления живых KPI, шаг за шагом изучая каждый компонент.
Настройка окружения
Установим все необходимые зависимости и загрузим Panel, hvPlot, Pandas и NumPy, чтобы панель работала без сбоев в Colab. Мы создадим полгода синтетических временных данных по сегментам и регионам, чтобы обеспечить богатый набор данных для исследования.
import sys, subprocess
def install_deps():
pkgs = ["panel", "hvplot", "pandas", "numpy", "bokeh"]
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q"] + pkgs)
try:
import panel as pn
import hvplot.pandas
import pandas as pd
import numpy as np
except ImportError:
install_deps()
import panel as pn
import hvplot.pandas
import pandas as pd
import numpy as np
pn.extension()
rng = np.random.default_rng(42)
dates = pd.date_range("2024-01-01", periods=365, freq="D")
segments = ["A", "B", "C"]
regions = ["North", "South", "East", "West"]
# Генерация синтетических данных
base = pd.DataFrame(...)
df = base.reset_index(drop=True)Создание интерактивных виджетов
Мы создаем интерактивные виджеты и логику фильтрации, которые контролируют всю панель. Подключаем временной график к виджетам, позволяя мгновенные изменения по сегментам, регионам, метрикам и диапазонам дат.
segment_sel = pn.widgets.CheckBoxGroup(...)
region_sel = pn.widgets.MultiChoice(...)
metric_sel = pn.widgets.Select(...)
date_range = pn.widgets.DateRangeSlider(...)
smooth_slider = pn.widgets.IntSlider(...)Визуализация данных
Мы создаем дополнительные визуальные уровни: столбчатую диаграмму по сегментам и тепловую карту по регионам. Эти графики реагируют на одни и те же глобальные фильтры, предоставляя глубокие аналитические данные.
@pn.depends(segment_sel, region_sel, metric_sel, date_range)
def segment_bar(...):
...
@pn.depends(segment_sel, region_sel, metric_sel, date_range)
def region_heatmap(...):
...Симуляция обновлений KPI в реальном времени
Мы симулируем поток KPI, который обновляется каждую секунду, демонстрируя данные в реальном времени. Общий доход, средние конверсии и коэффициенты конверсии постоянно рассчитываются в рамках скользящего окна.
kpi_source = df.copy()
def compute_kpi(slice_df):
...
pn.state.add_periodic_callback(update_kpis, period=1000, start=True)Сборка панели
Мы организуем все компоненты в аккуратный многостраничный макет с помощью вкладок, создавая интуитивно понятную навигацию.
controls = pn.WidgetBox(...)
dashboard = pn.Tabs(...)Объединение всего воедино
Мы увидели, как легко комбинировать виджеты Panel, визуализации hvPlot и периодические обратные вызовы для построения мощной аналитической панели. Эта интерактивная система может послужить основой для реальных отчетов, экспериментов или панелей для промышленного использования.
Switch Language
Read this article in English