无法显示Bokeh工具栏

时间:2018-06-07 21:23:26

标签: python plot flask bokeh

我一般都是Bokeh和Flask python的新手,但我已经设法创建了一个图表,然后通过烧瓶将其输出到我的浏览器上。唯一的问题是我没有得到我的图表旁边的“散景工具栏”。

我的代码看起来像这样

from flask import Flask, render_template, request
import pandas as pd
import csv
from bokeh.plotting import figure
from bokeh.io import show
from bokeh.embed import components
from bokeh.models import Range1d
from bokeh.resources import CDN

app = Flask(__name__)


# Create the main plot
    def create_figure():
    xvals = []
    yvals = []
    with open('test.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')

        for row in readCSV:
            xvalue = row[0]
            yvalue = row[1]
            xvals.append(xvalue)
            yvals.append(yvalue)

    p = figure(plot_width=400, plot_height=400, x_range=(0, 20))
    p.y_range = Range1d(0, 15)
    p.circle(xvals, yvals, size=10)
    return p
# Index page
@app.route('/')
def index():
    plot = create_figure()
    script, div = components(plot)
    cdn_js = CDN.js_files[0]
    cdn_css = CDN.css_files[0]
    return render_template("index.html", script=script, div=div, 
    cdn_js=cdn_js, 
    cdn_css=cdn_css)
    # With debug=True, Flask server will auto-reload
    # when there are code changes
    if __name__ == '__main__':
        app.run(port=5000, debug=True)

我的index.html代码如下所示:

<html>
<head>
<link href={{ cdn_css|safe }} type="text/css" />
<script type="text/javascript" src={{ cdn_js|safe }}></script>
</head>
<body>
<H1>First</H1>

{{ script|safe }}
{{ div|safe }}

</body>
</html>

我错过了什么吗?当我将图形输出到output_file时,我得到工具栏。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

这很可能就是https://github.com/bokeh/bokeh/issues/7497问题。可用的解决方法as I posted in the thread如下:

  

有两种选择。如果要将工具栏保留为绘图的一部分,则必须手动创建ToolbarPanel并将其与add_layout()一起添加到绘图中。或者,您可以将一个工具栏与绘图分离,作为更大布局的元素,就像网格图一样。在这两种情况下,关键是设置plot.toolbar_location = None,以禁用默认ToolbarPanel的创建。

请关注此问题,以便了解未来的发展。

答案 1 :(得分:1)

我有同样的问题。我无法解释原因,但是此示例有效:realpython github