您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:散景悬停日期时间

Python:散景悬停日期时间

自从最初发布此答案以来,bokeh有了新的工作来简化事情。悬停工具可以通过指定格式化程序将datetime字段直接格式化为datetime,例如:

HoverTool(tooltips=[('date', '@DateTime{%F}')],
          formatters={'@DateTime': 'datetime'})

不再需要如下所示预先格式化数据源中的日期字段。有关更多信息,请参见格式化工具提示字段。

工具提示的问题是您使用日期的字符串表示形式创建了一个源,但是p.line()调用并未意识到这一点。因此,您必须传入具有工具提示,x和y值的columndatasource。

这是您的代码的有效变体:

from bokeh.plotting import figure, show
from bokeh.models.formatters import DatetimeTickFormatter
from bokeh.models import ColumnDataSource
from bokeh.models.tools import HoverTool
import pandas as pd
import numpy as np

data = {
    'DateTime' : pd.Series(
        ['2016-12-29 02:49:12',
        '2016-12-30 02:49:12',
        '2016-12-31 02:49:12'],
        dtype='datetime64[ns]'),
    'EuP' : [20,40,15]
}
df = pd.DataFrame(data)
df['tooltip'] = [x.strftime("%Y-%m-%d %H:%M:%s") for x in df['DateTime']]
p = figure(width=1100,height=300,tools='resize,pan,wheel_zoom,@R_967_2419@_zoom,reset,previewsave,hover',logo=None)
p.title.text = "Time Series for Price in Euros"
p.grid.grid_line_alpha = 0
p.xaxis.axis_label = "Day"
p.yaxis.axis_label = "Euros"
p.ygrid.band_fill_color = "olive"
p.ygrid.band_fill_alpha = 0.1
p.circle(df['DateTime'],df['EuP'], size=4, legend='close',
  color='darkgrey', alpha=0.2)
p.xaxis.formatter = DatetimeTickFormatter(formats=dict(
 hours=["%d %B %Y"],
 days=["%d %B %Y"],
 months=["%d %B %Y"],
 years=["%d %B %Y"],
))
hover = p.select(dict(type=HoverTool))
tips = [('when','@tooltip'), ('y','$y')]
hover.tooltips = tips
hover.mode = 'mouse'
p.line(x='DateTime', y='EuP', source=ColumnDataSource(df),
       legend='Price',color='navy',alpha=0.7)
show(p)

另请注意,关于散景工具提示中缺少格式选项的问题尚待解决。可能有一种更简单的方法,不必将日期字符串格式化为单独的列:

https://github.com/bokeh/bokeh/issues/1239

还可以告诉我如何格式化X轴刻度线以垂直显示吗?

他们对我来说很好,对不起,我对此无能为力。

希望这可以帮助!

PS,如果您发布带有导入语句的工作脚本以及模拟的数据框以使其能够进行测试,那么下一次会更好。花了一些时间来解决所有问题。但是我正在学习bokeh,所以很好:)

python 2022/1/1 18:30:54 有363人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶