gpt4 book ai didi

python - 定期回调引发的 Bokeh 错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:33 25 4
gpt4 key购买 nike

我正在关注有关 Bokeh 的 Udemy 教程,但遇到了一个无法解决的错误,并且尚未收到导师的回复。最初,我以为我的代码有问题,所以花了大约一周的时间试图解决这个问题,最后屈服并复制了导师的代码,结果发现错误仍然存​​在。

该代码的目的是抓取和绘制实时数据。代码如下:

from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, DatetimeTickFormatter
from bokeh.plotting import figure
from random import randrange
import requests
from bs4 import BeautifulSoup

# Create the figure
f = figure()

# Create webscraping function
def extract_value():
r = requests.get("https://bitcoincharts.com/markets/okcoinUSD.html", headers = {'User-Agent' : 'Chrome'})
c = r.content
soup = BeautifulSoup(c, "html.parser")
value_raw = soup.find_all("p")
value_net = float(value_raw[0].span.text)
return value_net

# Create ColumnDataSource
source = ColumnDataSource(dict(x = [], y = []))

# Create glyphs
f.circle(x = 'x', y = 'y', color = 'olive', line_color = 'brown', source = source)
f.line(x = 'x', y = 'y', source = source)

# Create periodic funtion
def update():
new_data = dict(x = [source.data['x'][-1]+1], y = [extract_value])
source.stream(new_data, rollover = 200)
print(source.data) # Displayed in the commmand line!

# Add a figure to curdoc and configure callback
curdoc().add_root(f)
curdoc().add_periodic_callback(update, 2000)

哪个是抛出:

Error thrown from periodic callback: IndexError('list index out of range',)

对这里发生的事情有什么想法吗?

最佳答案

像这样更改您的更新功能:

# Create periodic funtion
def update():
if len(source.data['x']) == 0:
x = 0
else:
x = source.data['x'][-1]+1

new_data = dict(x = [x] , y = [extract_value()])
print("new_data", new_data)
source.stream(new_data, rollover = 200)
print(source.data) # Displayed in the commmand line!

您的代码有两个问题:

  1. 您无需调用 extract_value 函数,而只需将其分配给y。因此,y 将不包含返回值。
  2. source.data['x'] 第一次调用 update() 时是一个空列表。因此,您尝试访问空列表的最后一个元素(通过 [-1])。这会给你错误 IndexError('list index out of range')

1 的解很简单。对于 2,它与您之前尝试做的类似。但首先您检查 source.data['x'] 是否为空。第一次调用更新时就会出现这种情况。在那里,您将 x 设置为 0。在接下来的执行中,当列表非空时,您将获取列表中的最后一个值并将其加一。

关于python - 定期回调引发的 Bokeh 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46339574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com