私はbokehを使用しており、そのJavaScriptとコールバックの側面を調べ始めています。Python、Bokeh、Javascript:コールバックでMongodbデータベースクエリを使用します。
私はdatepickerを含むコードを持っています: mongodbデータベースがトリガーされたときにコールバックでクエリを実行します。 私はjavascriptを知らないし、正しい方向に私を助けるためのいくつかのポインタが必要になります。
これは私がこれまでに得たコードです:
import pymongo
import pandas as pd
from bokeh.layouts import column
from bokeh.models import CustomJS, DatePicker
from bokeh.plotting import figure, show, ColumnDataSource
from bokeh.io import curdoc
from bokeh.models.formatters import DatetimeTickFormatter
import datetime
p = figure(x_axis_type="datetime",plot_width=900, height=200, title="GBP")
mongo=pymongo.MongoClient()
start=datetime.datetime.today().replace(hour=0,minute=0,second=0,microsecond=0)
end=start+datetime.timedelta(hours=24)
data=pd.DataFrame.from_records(
mongo.prices["Russia Ruble"].find({"datetime":
{"$gte":start,"$lte":end}}))[["close","datetime"]]
source = ColumnDataSource(data.to_dict(orient="list"))
callback=CustomJS(args=dict(source=source),code='''
var data=source.data;
var f=cb_obj.value
start = f.replace(hour=0,minute=0,second=0,microsecond=0) # use a javacript equivalent of the python code here...
end= start +datetime.timedelta(hours=24) # use a javacript equivalent of the python code here...
data=pd.DataFrame.from_records(
mongo.prices["Russia Ruble"].find({"datetime":
{"$gte":start,"$lte":end}}))[["close","datetime"]] # use a javacript equivalent of the python code here...
source.change.emit()
''')
p.line(x = "datetime", y ="close", color="black", source=source)
datepicker=DatePicker(max_date=start,value=start)
datepicker.js_on_change("value",callback)
curdoc().add_root(column(p,datepicker))
最初は、私はいくつかのJavaScriptと一緒にいくつかのPythonコードを実行することが可能であったかどうかを確認しようとした(または単にいくつかのpythonコードを...)にコールバックが、this part of the docはこれが不可能であることを明確に述べているようです。
私は自分の仕事で進歩するためにいくつかのjavascriptを学ぶ必要があるという事実を受け入れ、mongo dbとjavascriptを調べました。トピックに関する簡単なGoogleの研究は、このwould be close to what node.js is doingが示唆しているようですが、私はそれについてはあまりよく分かりません。 bokeh jsのコールバックはサーバーサイドのJavaScriptに匹敵しますか?その後、this page(フランス語では申し訳ありませんが、英語で同等のものは見つかりませんでした)は、node.jsでmongodbを使用するために、nodejsパッケージマネージャ(npm)を使用してmongodbドライバをインストールする必要があることを説明しています...私は明らかに既にオフトラックです...
要約: - 私はjavascriptコールバックで実行する必要がある簡単な操作を実行する良い方法です(つまり、選択した日付から開始時刻と終了時刻を作成するそのタイマーを使用してmongoddbデータベースからデータを照会する)
あなたの返信のためのthx!はい、私はボケウィジェットで私の最初の刺し傷だったので、少し失われました。実際、私が最初に試したように '.js_on_change'の代わりに' .on_change'を使うだけで、やりたいことをするのはとても簡単です。参照ギャラリーのソースコードを参照して解決策を見つけました。 –