Поиск по сайту:

Постройте живые графики, используя Python Dash и Plotly


Python предоставляет мощные инструменты, такие как Dash и Plotly, для создания интерактивных и динамических визуализаций, с помощью которых мы можем создавать живые графики и визуализировать данные в режиме реального времени, что важно для получения ценной информации. В этой статье рассказывается, как строить живые графики с помощью Python Dash и Plotly.

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

Как построить живые графики с помощью Python Dash и Plotly?

Ниже приведены шаги, которые мы будем выполнять для построения живых графиков с использованием Python Dash и Plotly.

  • Импортируйте необходимые модули —

    • `dash` и `plotly.graph_objs` импортируются из пакетов `dash` и `plotly`.

    • `dcc` и `html` импортируются из пакета `dash` для создания компонентов.

    • `Output`, `Input`, и `Interval` импортируются из модуля `dash.dependents` для определения обратных вызовов и обновления компонентов.

  • Инициализируйте приложение Dash:

    • Создайте экземпляр класса `Dash` и назначьте его переменной `app`.

  • Определите макет приложения:

    • Используйте компонент `html.Div`, чтобы создать контейнер для содержимого приложения.

    • Внутри `Div` добавьте компонент `html.H2` для отображения заголовка "Живой график".

    • Добавьте компонент `dcc.Graph` с `id`, равным "live-graph", чтобы отобразить график. Установите для `animate` значение `True`, чтобы включить обновления в режиме реального времени.

    • Включите компонент `dcc.Interval` с идентификатором "graph-update", чтобы определить интервал обновления графика.

  • Определите функцию обратного вызова:

    • Используйте декоратор `@app.callback`, чтобы указать функцию, которая будет обновлять график.

    • Функция обратного вызова принимает в качестве входных данных свойство `n_intervals` компонента `graph-update`. Это свойство представляет количество раз, когда истек интервал.

    • Внутри функции сгенерируйте случайные данные для значений осей X и Y. В приведенном ниже примере программы ось X находится в диапазоне от 0 до 9, а значения оси Y представляют собой случайно сгенерированные целые числа от 0 до 100.

    • Создайте объект `go.Scatter`, который будет представлять трассировку графа. Настройте его внешний вид, используя предоставленные параметры.

    • Создайте объект `go.Layout`, чтобы определить макет графика. Здесь мы устанавливаем заголовок и указываем диапазоны для осей X и Y на основе сгенерированных данных.

    • Возвращает словарь с компонентами `data` и `layout`, представляющими отображаемую фигуру графика.

  • Запустите приложение:

    • Используйте блок `if __name__ == "__main__":`, чтобы гарантировать, что приложение запускается только тогда, когда скрипт выполняется напрямую (а не импортируется как модуль).

    • Внутри блока вызовите метод `run_server` экземпляра `app`, чтобы запустить Dash-сервер. Установите для параметра `debug` значение `True` в целях отладки и укажите номер `port` для запуска сервера. Здесь установлено значение 8051.

Выполнив эти шаги, мы можем построить живые графики с помощью Dash и Plotly. Мы можем настроить данные, внешний вид и макет графика в соответствии с вашими требованиями. Не забудьте установить необходимые зависимости (`dash` и `plotly`), используя

pip install dash plotly 

Перед запуском программы.

Пример

import dash
from dash import dcc, html
from dash.dependencies import Output, Input
import plotly.graph_objs as go
import random

# Initialize the Dash app
app = dash.Dash(__name__)

# Define the layout of the app
app.layout = html.Div(
   [
      html.H2("Live Graph"),
      dcc.Graph(id="live-graph", animate=True),
      dcc.Interval(id="graph-update", interval=1000, n_intervals=0),
   ]
)

# Callback function to update the graph
@app.callback(Output("live-graph", "figure"), [Input("graph-update", "n_intervals")])
def update_graph(n):
   # Generate random data
   x_data = list(range(10))
   y_data = [random.randint(0, 100) for _ in range(10)]

   # Create the graph trace
   trace = go.Scatter(
      x=x_data,
      y=y_data,
      mode="lines+markers",
      name="Data",
      line={"color": "rgb(0, 255, 0)"},
      marker={"color": "rgb(0, 255, 0)", "size": 8},
   )

   # Create the graph layout
   layout = go.Layout(
      title="Live Graph",
      xaxis=dict(range=[min(x_data), max(x_data)]),
      yaxis=dict(range=[min(y_data), max(y_data)]),
   )

   # Return the graph figure
   return {"data": [trace], "layout": layout}

if __name__ == "__main__":
   app.run_server(debug=True, port=8051)

Выход

C:\Users\Tutorialspoint>python image.py
Dash is running on http://127.0.0.1:8051/

 * Serving Flask app 'image'
 * Debug mode: on

Заключение

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

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

Статьи по данной тематике: