2016-07-26 13 views
2

私はドキュメントを読んで、GoogleとStackOverflowで回答を探しましたが、賢明な人はまだいません。x軸からボケに希望する日時の値を取得する

私は、2つの変数 'score'と 'stress'の円グリフを持つボケグラフと、日時x軸(picture here)として3番目の変数 'date'を持っています。私は、ユーザーがサークルをクリックし、その特定のデータポイントの詳細なビューを示すURLに移動し、対応する日付で識別されるようにします。

URLの最後にdatetime値を追加するopenURLコールバックを持つタップツールを有効にしました。問題は、一度データポイントをクリックすると、渡されたdatetime値が希望の形式('2016-07-20')になっていないことです。代わりに、次の値が得られます: '1468969200000'。したがって、ユーザーは 'url/2016-07-20 /'の代わりに 'url/1468969200000 /'にリダイレクトされます。

データポイントをクリックすると渡される日付値の形式を変更する方法はありますか?

import datetime 
from bokeh.plotting import figure, output_notebook, show 
from bokeh.models import Range1d, OpenURL, TapTool, HoverTool, ColumnDataSource, DatetimeTickFormatter 

data = {'score': [4.33, 2.66, 4.66, 2.66, 2.66, 1.66, 1.0, 4.33], 
     'stress': [3.66, 3.0, 3.0, 1.33, 3.66, 3.33, 1.0, 4.33], 
     'date': [ 
      datetime.date(2016, 7, 17), 
      datetime.date(2016, 7, 18), 
      datetime.date(2016, 7, 19), 
      datetime.date(2016, 7, 20), 
      datetime.date(2016, 7, 21), 
      datetime.date(2016, 7, 22), 
      datetime.date(2016, 7, 23), 
      datetime.date(2016, 7, 24) 
     ] 
     } 

source = ColumnDataSource(data=data) 

TOOLS = ['hover', 'pan', 'tap'] 

plot = figure(x_axis_type='datetime', plot_height=250, tools=TOOLS) 

plot.circle('date', 'score', legend='score', size=15, color='red', source=source) 
plot.circle('date', 'stress', legend='stress', size=10, color='orange', source=source) 
plot.y_range = Range1d(1, 5, bounds=(1,5)) 
plot.x_range = Range1d(datetime.date(2016, 7, 17), datetime.date(2016, 7, 23)) 

hover = plot.select(type=HoverTool) 
hover.tooltips = [ 
    ("score", "@score"), 
    ("stress", "@stress"), 
    ("date", "@date") 
    ] 

url = 'url/@date/' 
taptool = plot.select(type=TapTool) 
taptool.callback = OpenURL(url=url) 

show(plot) 

答えて

1

簡単な回避策はほかに、文字列の形式で日付を提供するために、次のようになります。

はここ(jupyterのノートブックで実行)私のコードです。

dateStr= {'dateStr': [x.isoformat() for x in data['date']]} 
data.update(dateStr) 

そして、あなたはあなたのhover.tooltipsで関数datestrを使用することができますし、URLに提案、@jlarschため

hover.tooltips = [ 
    ("score", "@score"), 
    ("stress", "@stress"), 
    ("date", "@dateStr") 
    ] 

url = 'url/@dateStr/' 
+0

感謝を生成します!それはトリックでした! –

関連する問題