Itinai.com it company office background blured chaos 50 v 7b8006c7 4530 46ce 8e2f 40bbc769a42e 2

Создание интерактивной панели визуализации в реальном времени с Bokeh и JavaScript

Itinai.com it company office background blured chaos 50 v 7b8006c7 4530 46ce 8e2f 40bbc769a42e 2

Создание полностью интерактивной панели визуализации в реальном времени с использованием Bokeh и пользовательского JavaScript

В современном мире данные – это валюта. Их правильная интерпретация может привести к улучшению бизнес-процессов, оптимизации работы команды и повышению прибыли. Представьте панель, которая не просто отображает данные, но и позволяет вам взаимодействовать с ними в реальном времени. В этой статье мы рассмотрим, как создать такую панель, используя Bokeh и пользовательский JavaScript. Давайте погрузимся в мир интерактивной визуализации!

Зачем нужна интерактивная визуализация?

Обычные графики и таблицы быстро становятся недостаточными для глубокого анализа данных. Интерактивные панели позволяют:

  • Динамически фильтровать данные.
  • Исследовать взаимосвязи между переменными.
  • Принимать обоснованные решения на основе актуальной информации.

С Bokeh вы можете объединить мощь Python и гибкость JavaScript, создавая панели, которые легко настраиваются и отвечают на действия пользователя.

Настройка окружения

Первым делом необходимо установить необходимые библиотеки:

!pip install bokeh pandas numpy scipy

Создание синтетического набора данных

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


import numpy as np
import pandas as pd
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool

np.random.seed(42)
N = 300
data = pd.DataFrame({
    "temp_c": 20 + 5 * np.random.randn(N),
    "pressure_kpa": 101 + 3 * np.random.randn(N),
    "humidity_pct": 40 + 15 * np.random.randn(N),
    "sensor_id": np.random.choice(["A1", "A2", "B7", "C3"], size=N)
})

source = ColumnDataSource(data)
p = figure(title="Температура против давления", x_axis_label='Температура (°C)', y_axis_label='Давление (kPa)')
p.circle(x='temp_c', y='pressure_kpa', source=source, size=8, fill_alpha=0.6, color='orange')
show(p)

Связанный выбор для улучшенного анализа

Теперь давайте расширим нашу визуализацию, добавив еще один график для изучения взаимосвязи между влажностью и температурой. Используя связанный выбор, вы сможете выбирать данные в одном графике, и они автоматически отобразятся в другом:


from bokeh.layouts import row

p_humidity = figure(title="Влажность против Температуры", x_axis_label='Температура (°C)', y_axis_label='Влажность (%)')
p_humidity.square(x='temp_c', y='humidity_pct', source=source, size=8, fill_alpha=0.6, color='navy')

layout = row(p, p_humidity)
show(layout)

Динамическая фильтрация данных

Одной из ключевых особенностей интерактивных панелей является возможность динамической фильтрации данных. Мы можем добавить элементы управления, такие как выпадающие списки и ползунки, чтобы пользователи могли управлять отображаемыми данными:


from bokeh.models import Select, Slider, CheckboxGroup, ColumnDataSource

sensor_select = Select(title="Фильтр по ID сенсора", value="A1", options=["A1", "A2", "B7", "C3"])
temp_slider = Slider(title="Максимальная температура (°C)", start=0, end=40, value=40)

def update(attr, old, new):
    selected_sensor = sensor_select.value
    max_temp = temp_slider.value
    # Фильтрация данных
    filtered_data = data[(data['sensor_id'] == selected_sensor) & (data['temp_c'] <= max_temp)]
    source.data = ColumnDataSource(filtered_data).data

sensor_select.on_change('value', update)
temp_slider.on_change('value', update)

layout_controls = column(sensor_select, temp_slider)
dashboard_layout = row(layout_controls, layout)
show(dashboard_layout)

Клиентская интерактивность с помощью CustomJS

С помощью CustomJS вы можете реализовать интерактивные функции, которые выполняются на стороне клиента. Например, вы можете увеличить размеры точек на графике при нажатии кнопки:


from bokeh.models import Button, CustomJS

button = Button(label="Увеличить точки")
callback = CustomJS(args=dict(source=source), code="""
    const data = source.data;
    const size = data['size'];
    for (let i = 0; i < size.length; i++) {
        size[i] += 2;
    }
    source.change.emit();
""")
button.js_on_click(callback)

show(row(button, layout))

Симуляция потоковой передачи данных в реальном времени

Для демонстрации возможностей Bokeh в реальном времени мы можем создать поток данных. Эта функция позволяет вам видеть, как визуализация обновляется в реальном времени, при этом новые данные добавляются к существующим:


stream_source = ColumnDataSource(data=dict(t=[], val=[]))

# Здесь добавьте код для обновления данных в реальном времени

Часто задаваемые вопросы (FAQ)

1. Что такое Bokeh и как он работает?

Bokeh – это библиотека визуализации данных для Python, которая позволяет создавать интерактивные графики и панели управления для веб-приложений.

2. Как CustomJS улучшает взаимодействие с пользователем?

CustomJS позволяет выполнять действия на стороне клиента без необходимости обращаться к серверу, что делает взаимодействие более быстрым и отзывчивым.

3. Какие данные я могу визуализировать с помощью Bokeh?

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

4. Как я могу интегрировать Bokeh в существующее веб-приложение?

Bokeh предоставляет возможность встраивания графиков в HTML-код, что позволяет легко интегрировать ваши визуализации в существующие проекты.

5. Какие практики следует учитывать при создании визуализаций?

Старайтесь делать визуализации простыми, понятными и интуитивно понятными. Используйте четкие подписи, контрастные цвета и избегайте перегрузки информации.

6. Как избежать распространенных ошибок при работе с Bokeh?

Убедитесь, что данные очищены и подготовлены перед визуализацией, а также тестируйте интерактивные элементы на разных устройствах.

Заключение

Создание интерактивной панели визуализации с использованием Bokeh и JavaScript открывает новые горизонты для анализа данных. Вы получаете возможность не просто наблюдать за данными, но и активно взаимодействовать с ними, что значительно повышает качество принятия решений. Используйте приведенные примеры и идеи для создания собственной панели и не бойтесь экспериментировать с функционалом Bokeh!

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн