我正在尝试使用 embed.autoload_server 函数在一个简单的 Flask 应用程序提供的网页中嵌入散景图,该函数是我从查看 github 上的散景嵌入示例中获得的。在 python 方面,一切似乎都按预期工作,但页面呈现时没有任何数据(即使数据在 JS 绘图对象中)。我确实看到了 5 个散景图操作按钮,但我没有看到实际的图。打开 JS 控制台后,我看到 i 变量在以下语句中返回为未定义(第 23512 行,bokeh.js):
i = this.get('dimension');
结果,ranges[i] 也是未定义的,这是我在控制台中遇到的错误。
我可以将浏览器导航到实际的 plot json,并且我可以看到所有的数据,这就是我转向 JS 控制台进行故障排除的原因。
任何想法都将不胜感激,我的 JS 目前很生疏。python“绘图”对象的属性和JS“绘图”对象的属性之间是否存在关系?这似乎只是我的前端对象缺少“尺寸”属性的问题。
为了回答这个问题,这里是代码,它几乎是直接从烛台示例代码中提取的,但那是几周前的拉动,所以它很可能过时了。从那以后我再次拉动并且没有重新访问此代码,因为创建绘图数据没有问题。
def candlestick():
store = pd.HDFStore('../data/dt_metastock.h5')
keys = [key for key in store.keys() if 'daily' in key]
df = store[keys[0]][:800]
#df['date'] = pd.to_datetime(df['date'])
mids = (df.open + df.close)/2
spans = abs(df.close-df.open)
inc = df.close > df.open
dec = df.open > df.close
w = 12*60*60*1000 # half day in ms
output_server("candlestick")
figure(tools="pan,wheel_zoom,box_zoom,reset,previewsave",
plot_width=1000, name="candlestick")
hold()
segment(df.idx, df.high, df.idx, df.low, color='black')
w = .5
rect(df.idx[inc].values, mids[inc], w, spans[inc], fill_color="#D5E1DD", line_color="black")
rect(df.idx[dec].values, mids[dec], w, spans[dec], fill_color="#F2583E", line_color="black")
curplot().title = keys[0]
xaxis().major_label_orientation = pi/4
grid().grid_line_alpha=0.3
tag = embed.autoload_server(curplot(), cursession())
return tag