我的数据库中有成对的散景图组件以供嵌入-脚本和Div HTML元素。我想在单页上嵌入更多独立的散景图。下面的模板代码会为每次迭代呈现相同的第一张图,请告知我我做错了什么。
PS:我知道要嵌入多个图,您可以为所有图导出单个脚本,并为每个图导出唯一的Div。这对我不起作用,因为每个图都会在不同的时间生成(更新)。
感谢您的帮助!
SELECT (@pos := if(@d = date, @pos + 1,
if(@d := date, 1, 1)
)
) as pos,
`sale_qty`, Date, post_id
FROM (SELECT s.*
FROM `sale_qty` s
ORDER BY `Date`ASC, `sale_qty` ASC
) s CROSS JOIN
(SELECT @d := '', @pos := 0) p ;
答案 0 :(得分:0)
在这种情况下,您可能应该使用最近添加的json_item
进行嵌入。此函数会生成所传递内容的JSON表示形式,可以使用对模板中Bokeh.embed.embed_items
的JavaScript调用将其分别嵌入。
这是一个基于Flask的完整示例,但该想法应直接转移到Django:
from __future__ import print_function
import json
from bokeh.embed import json_item
from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.sampledata.iris import flowers
from flask import Flask
from jinja2 import Template
app = Flask(__name__)
page = Template("""
<!DOCTYPE html>
<html lang="en">
<head>
{{ resources }}
</head>
<body>
<div id="myplot"></div>
<div id="myplot2"></div>
<script>
fetch('/plot')
.then(function(response) { return response.json(); })
.then(function(item) { Bokeh.embed.embed_item(item); })
</script>
<script>
fetch('/plot2')
.then(function(response) { return response.json(); })
.then(function(item) { Bokeh.embed.embed_item(item, "myplot2"); })
</script>
</body>
""")
colormap = {'setosa': 'red', 'versicolor': 'green', 'virginica': 'blue'}
colors = [colormap[x] for x in flowers['species']]
def make_plot(x, y):
p = figure(title = "Iris Morphology", sizing_mode="fixed", plot_width=400, plot_height=400)
p.xaxis.axis_label = x
p.yaxis.axis_label = y
p.circle(flowers[x], flowers[y], color=colors, fill_alpha=0.2, size=10)
return p
@app.route('/')
def root():
return page.render(resources=CDN.render())
@app.route('/plot')
def plot():
p = make_plot('petal_width', 'petal_length')
return json.dumps(json_item(p, "myplot"))
@app.route('/plot2')
def plot2():
p = make_plot('sepal_width', 'sepal_length')
return json.dumps(json_item(p))
if __name__ == '__main__':
app.run()