в дополнение ко всем предыдущим ответам, и в случае, если вам интересно, как мы будем писать динамические имена свойств в будущем, используя имена вычисляемых объектов (ECMAScript 6), вот как:
var person = "John Doe";
var personId = "person_" + new Date().getTime();
var personIndex = {
[ personId ]: person
// ^ computed property name
};
personIndex[ personId ]; // "John Doe"
Ссылка
Я приведу план реализации нескольких графиков:
Создайте отдельное приложение Bokeh для каждого графика. См. modify_doc
в примере
def change_doc1():
# code to define how plot 1 should behave
def change_doc2():
# code to define how plot 2 should behave
Инициализация сервера Bokeh с несколькими приложениями вместо одного приложения
def bk_worker():
plots = { "/plot1": change_doc1, "/plot2": change_doc2 }
server = Server(plots, io_loop=IOLoop(), allow_websocket_origin=["localhost:{}".format(port)])
server.start()
server.io_loop.start()
@app.route('/', methods=['GET'])
def bkapp_page():
script1 = server_document('http://localhost:5006/plot1')
script2 = server_document('http://localhost:5006/plot2')
return render_template("embed.html", script1=script1, script2=script2)
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Time Plots</title>
</head>
<body>
<div id="plot1">
{{ script1 | safe }}
</div>
<div id="plot2">
{{ script2 | safe }}
</div>
</body>
</html>