python-3.x - 散景线图将每个点连接到第一个点,出了什么问题?
问题描述
我正在尝试提供实时数据并根据日期时间绘制它。然而,每个点都通过一条线连接到第一个点。这里有什么问题?感谢您的任何帮助。(我将其另存为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"
解决方案
stream
用于向数据源添加新点。您不断地从每次更新中累积所有积分,从而重新传输您已经发送的旧积分。不需要附加任何东西,只发送实际的新点,没有别的:
def update():
x = [np.datetime64('now')]
y = [np.random.rand()]
source.stream(dict(time=x, data=y), 100)
推荐阅读
- c# - 如何在 x 轴上平滑移动对象?
- java - 等待 executor 的线程由 executor submit 完成
- python - 是否允许在抽象类中使用用户定义的装饰器?或者,是否应该在继承后使用?
- salesforce - 你如何禁用 Apex:OutputField?
- python - Pandas:根据开始/结束分割点的字符串列表(重叠)将字符串列拆分为组件列
- ios - 如何在 Xcode 运行脚本中检测是否为 IBDesignable 构建 Storyboard
- vue.js - 如何在使用 v-for 时更新文本输入值
- javascript - 如何访问嵌套数组中的特定值
- firebase - 错误:Firebase:没有创建 Firebase 应用“[DEFAULT]”
- android - 关于在我的第一个 android 应用程序中使用 Selenium