散景字形坐标 x_axis_type 'datetime'
Bokeh glyph coordinates with x_axis_type 'datetime'
我正在尝试将一个简单的文本字符串(字形)添加到使用 x_axis_type='datetime'
的散景图中
我的代码(只保留其要点)如下:
p = figure(plot_width=900, plot_height=380, x_axis_type='datetime')
dt = date(2003, 3, 15)
p.line(xvals, yvals)
txt = Text(
# x=some_formatting_function(dt),
x=1057005600000,
y=0.1,
text=["happy day!"],
text_align="left",
text_baseline="middle",
text_font_size="11pt",
text_font_style="italic",
)
p.add_glyph(txt)
show(p)
x 轴 range/values(即日期)运行 从 2002 年到 2006 年,我想在 2003 年添加文本。我在中显示的 x 值上面的代码(即 1057005600000——我通过反复试验得出的代码)将字形放在正确的位置。
但我不知道如何直接使用 datetime.date...
是否有散景功能(或 datetime.date 的 属性)可以给我散景图预期的值??
非常感谢。
N.B。我试过使用 x = bokeh.properties.Date(dt)
但这给了我:
ValueError: expected an element of either String,
Dict(String, Either(String, Float)) or Float, got <bokeh.properties.Date object
当 x_axis_type 属性设置为 'datetime' 时,Bokeh 将根据自纪元以来的秒数沿 x 轴绘制内容。最简单的解决方案是使用 datetime.datetime (不是 .date),然后使用 timestamp() 方法(这将给出你得到的 ~1.50e9 数字)将你的 dt 对象转换为 seconds-since-epoch,然后使用那是你的 x 坐标。
$ from datetime import datetime
$ dt = datetime.now()
$ dt
> datetime.datetime(2015, 6, 17, 10, 41, 34, 617709)
$ dt.timestamp()
> 1434555694.617709
请参阅以下 SO question/answer 以获得 python2 我的问题的答案:
How can I convert a datetime object to milliseconds since epoch (unix time) in Python?
感谢@Luke Canavan 为我指明了正确的方向(!)
我正在尝试将一个简单的文本字符串(字形)添加到使用 x_axis_type='datetime'
我的代码(只保留其要点)如下:
p = figure(plot_width=900, plot_height=380, x_axis_type='datetime')
dt = date(2003, 3, 15)
p.line(xvals, yvals)
txt = Text(
# x=some_formatting_function(dt),
x=1057005600000,
y=0.1,
text=["happy day!"],
text_align="left",
text_baseline="middle",
text_font_size="11pt",
text_font_style="italic",
)
p.add_glyph(txt)
show(p)
x 轴 range/values(即日期)运行 从 2002 年到 2006 年,我想在 2003 年添加文本。我在中显示的 x 值上面的代码(即 1057005600000——我通过反复试验得出的代码)将字形放在正确的位置。
但我不知道如何直接使用 datetime.date...
是否有散景功能(或 datetime.date 的 属性)可以给我散景图预期的值??
非常感谢。
N.B。我试过使用 x = bokeh.properties.Date(dt)
但这给了我:
ValueError: expected an element of either String,
Dict(String, Either(String, Float)) or Float, got <bokeh.properties.Date object
当 x_axis_type 属性设置为 'datetime' 时,Bokeh 将根据自纪元以来的秒数沿 x 轴绘制内容。最简单的解决方案是使用 datetime.datetime (不是 .date),然后使用 timestamp() 方法(这将给出你得到的 ~1.50e9 数字)将你的 dt 对象转换为 seconds-since-epoch,然后使用那是你的 x 坐标。
$ from datetime import datetime
$ dt = datetime.now()
$ dt
> datetime.datetime(2015, 6, 17, 10, 41, 34, 617709)
$ dt.timestamp()
> 1434555694.617709
请参阅以下 SO question/answer 以获得 python2 我的问题的答案:
How can I convert a datetime object to milliseconds since epoch (unix time) in Python?
感谢@Luke Canavan 为我指明了正确的方向(!)