首页 > 解决方案 > 用于数据块中散景的循环

问题描述

嗨,我想循环 for 循环,例如。下面的几次代码可以在一个数据块单元格中获得几次相同的图形:

我导入了库:

from bokeh.plotting import figure
from bokeh.embed import components, file_html
from bokeh.resources import CDN

x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]


for i in range(5):
p = figure(title='test', x_axis_label = 'x values', y_axis_label='y values')
p.line(x,y, line_width =2)
html = file_html(p,CDN,'plot')
displayHTML(html)

我试图使用 for 循环,但我仍然在单元格中只获得一个图形。

还尝试了不同的模块,比如这里:

from bokeh.io import output_file, show
from bokeh.plotting import figure

x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

for i in range(5):
  p = figure(title='test', x_axis_label = 'x values')
  p.line(x,y, line_width =2)
  output_file("line"+str(i)+".html")
  show(p)

但是在这里我没有得到任何结果,没有绘制任何内容。你能告诉我为什么吗?

也试过这个:

d={}
for i in range(5):
  p = figure(title='test', x_axis_label = 'x values')
  p.line(x,y, line_width =2)
  d["html{0}".format(i)]=file_html(p,CDN, 'plot' + str(i))

for j in d:
  displayHTML(j)

看起来,在数据块中使用散景,每个单元格只能显示一个图形。有谁知道是不是真的?

你能帮我用for循环的语法来多次获取它吗?

标签: pythonbokehdatabricks

解决方案


从其他答案看来,使用 Bokeh 不完全支持的旧笔记本版本的 Databricks 可能存在问题。如果标准output_notebook不起作用,但displayHTML事情确实如此,那么我会说你最好的选择是收集你想在column布局中显示的图,然后在最后一次调用一次显示它们show

from bokeh.layouts import column

plots = []
for i in range(5):
    p = figure(...)
    p.line(...)
    plots.append(p)

layout = column(*plots)

# only use this way for databricks
html = file_html(layout, CDN, 'plot')
displayHTML(html)

推荐阅读