2017-10-24 9 views
0

目的:2017/10/2と2017/10/5にのみx軸に目盛りを付けたい。 1つの制約は、私の時間が均等に分離されていることが保証されていないことです。したがって、文字列に変換してカテゴリ軸を行うことはできません。数値/日時である必要があります。カスタム日時/タイムスタンプ値を持つBokeh FixedTicker

問題:Bokehによって適切にレンダリングされるように、希望の日付を適切にフォーマットする方法がわかりません。私はミリ秒に変換するために10 ** 9で除算しようとしました。これはうまくいきませんでした。

サンプルコード:

from bokeh.plotting import figure, show 
from bokeh.models import FixedTicker 
import pandas as pd 
import numpy as np 

y = list(range(3)) 
x = [pd.Timestamp('2017-10-01'), pd.Timestamp('2017-10-09'), pd.Timestamp('2017-10-10')] 

tick_vals = pd.Series([pd.Timestamp('2017-10-02'), 
         pd.Timestamp('2017-10-05')]).astype(np.int64) 
tick_vals = tick_vals 
tick_vals = tick_vals.astype(float) 

fig = figure(x_axis_type='datetime') 
fig.line(x, y, y_range_name=None) 
fig.xaxis.ticker = FixedTicker(ticks=list(tick_vals)) # Commenting this line works okay using the x values. They are properly formatted. 

show(fig) 

バージョン: ボケ:0.12.9 パンダ:0.20.3 のPython:3.5.4 numpyの:整数に1.13.3

答えて

0

変換パンダタイムスタンプを提供しますナノ秒。ですから、10^6で割ってミリ秒単位で計算してください:

y = list(range(3)) 
x = pd.to_datetime(['2017-10-01', '2017-10-09', '2017-10-10']) 
tick_vals = pd.to_datetime(['2017-10-02', '2017-10-05']).astype(int)/
10**6 

fig = figure(x_axis_type='datetime') 
fig.line(x, y) 
fig.xaxis.ticker = FixedTicker(ticks=list(tick_vals)) 
show(fig) 
関連する問題