plotly python 实时绘制
Plotly 是一个用于可视化数据的 Python 库,可以与实时数据流集成,实现实时数据绘制。实时绘制可以帮助我们实时监控数据变化,对数据进行更深入的分析和理解。本文将介绍如何使用 Plotly Python 来实现实时绘制。
安装 Plotly
首先,我们需要安装 Plotly 库。可以使用 pip 在命令行中执行以下命令来安装:
pip install plotly
导入库
在开始之前,我们需要导入一些必要的库:
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import numpy as np
import time
plotly.graph_objects
用于创建图形对象plotly.subplots
用于创建子图numpy
用于生成模拟数据time
用于生成实时数据
实时绘制曲线图
下面我们将演示如何实时绘制一个简单的曲线图。首先,我们创建一个空的图形对象,并设置 x 和 y 的范围:
fig = go.Figure()
fig.update_xaxes(range=[0, 10])
fig.update_yaxes(range=[0, 10])
然后,我们创建一个函数 generate_data
来生成实时数据。这里我们简单地使用随机数生成模拟数据:
def generate_data():
x = np.arange(10)
y = np.random.randint(0, 10, size=10)
return x, y
接下来,我们创建一个循环,在每次迭代中生成新的数据,并将数据添加到图形对象中,然后更新图形并暂停一段时间:
while True:
x, y = generate_data()
fig.add_trace(go.Scatter(x=x, y=y, mode='lines+markers', name='data'))
fig.show()
time.sleep(1)
这段代码会实时更新曲线图,每秒生成一组数据点,并将其添加到图形对象中。
实时绘制多图
除了单个曲线图,我们还可以实时绘制多个图。下面我们将演示如何在一个图中绘制多个子图,并实时更新这些子图。
首先,我们使用 make_subplots
函数创建一个包含两个子图的图形对象:
fig = make_subplots(rows=1, cols=2)
然后,我们创建两个函数 generate_data1
和 generate_data2
来分别生成两个子图的实时数据:
def generate_data1():
x = np.arange(10)
y = np.random.randint(0, 10, size=10)
return x, y
def generate_data2():
x = np.arange(10)
y = np.random.randint(0, 10, size=10)
return x, y
接下来,我们更新循环中的代码来添加两个子图的数据,并实时更新图形对象:
while True:
x1, y1 = generate_data1()
x2, y2 = generate_data2()
fig.add_trace(go.Scatter(x=x1, y=y1, mode='lines+markers', name='data1'), row=1, col=1)
fig.add_trace(go.Scatter(x=x2, y=y2, mode='lines+markers', name='data2'), row=1, col=2)
fig.show()
time.sleep(1)
这段代码会实时更新包含两个子图的图形对象,每秒生成一组数据点,并将其添加到相应子图中。
运行结果
当你运行上述代码时,你会看到一个实时更新的曲线图或包含两个子图的实时更新图。每秒数据都会更新,使图形实时反映数据变化。
通过实时绘制,我们可以更直观地观察数据的变化趋势,并及时做出相应的处理。这对于许多实时监控和数据分析的应用非常有用。