我正在学习bokeh,正在申请。我使用文档bokeh serve --show app
中给出的架构运行目录,代码成功运行,并且按预期显示了模板和CSS的呈现,但是没有看到要生成的图。
https://github.com/bokeh/bokeh/blob/master/examples/app/weather/main.py
我遵循了这个步骤,并且还查看了建议使用curdoc()
的Stackoverflow,但仍然看不到该图。我正在使用Python 3.6和Bokeh 0.13.0 Firefox 61.0和OS Ubuntu
这是我的main.py完整代码
from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.layouts import row
p = figure(title='One sample graph',
plot_width=700,
plot_height=700,
toolbar_location=None)
p.circle([1,2,3,4,5],[6,7,2,5,4], size=15)
curdoc().add_root(row(p))
我还看着终端,看那里是否有任何错误。它也没有任何错误,当我查看HTML服务器的源代码时,没有看到用于生成绘图的代码。我想念什么吗?请帮忙。
编辑1:
我也看了下面的教程。该应用程序没有任何模板和CSS,也无法解决我的问题。
这是我只运行bokeh serve --show main.py时的输出。在这种情况下,我只看到图并丢失了模板和CSS信息。我还下载了Chrome浏览器,以查看浏览器是否存在问题,但事实并非如此。
我在代码中缺少什么吗?在gitter上,我还被告知要使用server_document(),该语句应放在我的文档中的什么位置,以便正确呈现所有内容?
答案 0 :(得分:0)
在运行bokeh serve --show appdir
时,显示templates/index.html
,但是原始模板没有包含对embed
的任何调用以指定应将绘图移至何处,因此未显示任何绘图。有必要在模板中调用embed
,以便Bokeh知道将图放置在哪里。在embed
中使用index.html
的更新模板如下所示:
main.py:
from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.layouts import row
p = figure(title='One sample graph',
plot_width=700,
plot_height=700,
toolbar_location=None)
p.circle([1,2,3,4,5],[6,7,2,5,4], size=15)
curdoc().add_root(row(p, name='plotrow'))
templates / index.html:
{% extends base %}
{% block preamble %}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet">
<link rel="stylesheet" href="app/static/special.css">
{% endblock %}
{% block contents %}
<title>Dashboard</title>
<div class="background">
<div class="header">
<h1>Text</h1>
<h2>Some more text</h2>
<p>Even more text</p>
</div>
<div class="bar"></div>
<div class="container">{{ embed(roots.plotrow) }}</div>
<div class="footer">
<p>Some extra text <br/>By someone</p>
</div>
</div>
{% endblock %}