具有自定义 Datetime/Timestamp 值的 Bokeh FixedTicker
Bokeh FixedTicker with Custom Datetime/Timestamp values
Objective:我只想在 2017/10/2 和 2017/10/5 的 x 轴上有刻度线。一个限制是我的时间不能保证均匀分开,因此无法转换为字符串并进行分类轴。他们需要 numeric/datetime.
问题:我不确定如何正确设置所需日期的格式,以便 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
Pandas:0.20.3
Python:3.5.4
麻木的:1.13.3
将 pandas 时间戳转换为整数得到纳秒。所以除以 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)
Objective:我只想在 2017/10/2 和 2017/10/5 的 x 轴上有刻度线。一个限制是我的时间不能保证均匀分开,因此无法转换为字符串并进行分类轴。他们需要 numeric/datetime.
问题:我不确定如何正确设置所需日期的格式,以便 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 Pandas:0.20.3 Python:3.5.4 麻木的:1.13.3
将 pandas 时间戳转换为整数得到纳秒。所以除以 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)