虚化线图把每一个点都连接到第一个点,这是怎么回事?

问题描述 投票:1回答:1

我想输入实时数据,并对日期时间进行绘制。但是每一个点都被一条线连接到第一个点。这里有什么问题?谢谢你的帮助。(我把这个保存为 test.py 并运行 bokeh serve --show test.py 在命令提示符中)。)

from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, DatetimeTickFormatter
from bokeh.plotting import figure
import numpy as np

x, y = [], []
source = ColumnDataSource(dict(time=x, data=y))

p = figure(x_axis_type='datetime')
p.line(x='time', y='data', source=source)
p.xaxis.formatter = DatetimeTickFormatter(days="%m/%d %H:%M", months="%m/%d %H:%M",
                                          hours="%m/%d %H:%M", minutes="%m/%d %H:%M")


def update():
    x.append(np.datetime64('now'))
    y.append(np.random.rand())
    source.stream(dict(time=x, data=y), 100)


curdoc().add_root(p)
curdoc().add_periodic_callback(update, 1000)
curdoc().title = "random"

它看起来像下面的东西。enter image description here

python-3.x plot windows-10 bokeh
1个回答
2
投票

stream 是用于添加 新的 指向一个数据源。你在不断地积累 每次更新的积分,从而重新流转你已经被发送的旧积分。不需要附加任何东西,只发送实际的新积分,其他的都不需要。

def update():
    x = [np.datetime64('now')]
    y = [np.random.rand()]
    source.stream(dict(time=x, data=y), 100)
© www.soinside.com 2019 - 2024. All rights reserved.