Постройте живые графики, используя 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.