python - 如何摆脱我的散景图周围的这些额外文本(Flask Web 应用程序)
问题描述
我正在尝试在我的 Flask Web 应用程序中集成散景图(我成功了),滑块也可以完美运行。但是我的图表周围有一些额外的代码,如下图所示。谁能告诉我为什么我得到这个额外的文本以及如何摆脱它?
谢谢
这是代码的摘录:
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, CustomJS, Slider
from bokeh.plotting import figure, output_file, show
@app.route('/graph')
def graph():
x = [x*0.005 for x in range(0, 200)]
y = x
source = ColumnDataSource(data=dict(x=x, y=y))
plot = figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
callback = CustomJS(args=dict(source=source), code="""
var data = source.data;
var f = cb_obj.value
var x = data['x']
var y = data['y']
for (var i = 0; i < x.length; i++) {
y[i] = Math.pow(x[i], f)
}
source.change.emit();
""")
slider = Slider(start=0.1, end=4, value=1, step=.1, title="power")
slider.js_on_change('value', callback)
layout = column(slider, plot)
script, div = components({"plot": plot,"slider":column(slider)})
kwargs = {'script': script, 'div': div}
kwargs['title'] = 'bokeh-with-flask'
return render_template('graph.html', **kwargs)
这是HTML:
{% extends "base.html" %}
{% block content %}
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ title }}</title>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh.min.css"
rel="stylesheet" type="text/css">
<link
href="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh-widgets.css"
rel="stylesheet" type="text/css">
<link
href="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh-tables.css"
rel="stylesheet" type="text/css">
</head>
<body>
<h1>Chart</h1>
{{ div|safe }}
{{ script|safe }}
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh-widgets.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bokeh/1.2.0/bokeh-tables.js"></script>
</html>
{% endblock %}
解决方案
尝试更换
script, div = components({"plot": plot,"slider":column(slider)})
kwargs = {'script': script, 'div': div}
和
script, (plot_div, slider_div) = components((plot, column(slider)))
kwargs = {'script': script, 'plot_div': plot_div, 'slider_div': slider_div}
和
{{ div|safe }}
{{ script|safe }}
和
{{ plot_div|safe }}
{{ slider_div|safe }}
{{ script|safe }}
或者,由于您将它们一个接一个地直接嵌入,只需将它们包装在一起 acolumn
并将其传递给components
而不是分别传递多个根。
推荐阅读
- regex - 小数语言的正则表达式
- javascript - 我怎样才能点击一个
- python - 如何使用 Python 正确遍历 Selenium Webdriver 中的 Web 元素列表?
- laravel - Laravel 路由中复杂模型名称的依赖注入
- python-3.x - AttributeError:当我使用 blaze 模块时,模块 'pandas' 没有属性 'tslib'
- python - 如何纠正我在石头剪刀布游戏中的错误
- json - Shell 脚本 - 如果在 Bash 中匹配,则迭代、比较和提取 JSON 的值
- typescript - 如何在 tsconfig 中声明库中包含的类型?
- javascript - 屏幕阅读器在 aria-valuetext 在任何时候都不会更改多个步骤后停止阅读
- swift - 我可以使用泛型协议来描述非泛型类型的委托吗?