【问题标题】:bokeh hover tool - format date variable in custom html散景悬停工具 - 在自定义 html 中格式化日期变量
【发布时间】:2016-02-01 11:05:16
【问题描述】:

我有

dt_source = ColumnDataSource(
    {
        "date": result_detail['report_date_as_yyyy_mm_dd']
        ,"contract": result_detail['contract_name']
        ,"open_interest": result_detail['open_interest']
    }
)

tools="wheel_zoom,reset,save,crosshair,pan,box_zoom" 

oi = figure(plot_width=800, plot_height=200, x_axis_type="datetime", tools=tools, title="Open Interest")

oi.line(x="date", y="open_interest", source=dt_source)
oi.title_text_font_size = value("12pt")
oi.ygrid.grid_line_color = None
oi.yaxis.minor_tick_line_color = None
oi.xgrid.grid_line_dash = "dashed"

#adjust what information you get when you hover over it
oi_tooltips = """
<span face="font-family: Arial, Helvetica, sans-serif">
    <div>
        <span style="font-size: 15px;">@contract</span>&nbsp;
        <span style="font-size: 10px; color: #666;">@signal</span>
    </div>
    <div style="line-height: 1;">
        <span style="font-size: 10px; color: #666; white-space:pre;">Open Interest &#9; @open_interest{1,1}</span>
    </div>
    <div style="line-height: 1;">
        <span style="font-size: 10px; color: #666; white-space:pre;">Date &#9; &#9; &#9; @date</span>
    </div>
</span>
"""
oi_hover = HoverTool(tooltips=oi_tooltips)
oi.add_tools(oi_hover)

问题在于日期 (Date &amp;#9; &amp;#9; &amp;#9; @date),它在悬停工具中显示为纪元时间。

我试过了:

  • @date
  • @date{date}
  • @date{datetime}
  • @date{dd/mm/yyyy}
  • @date{"dd/mm/yyyy"}

我想知道使用 html 中的悬停工具的日期类型的格式设置选项。以下任一格式的具体格式:

  • yyyy-mm-dd
  • dd/mm/yyyy

dt_source 正在使用从 Postgresql 中提取的数据,它正在调用的过程正在返回一个日期类型。运行result_detail["report_date_as_yyyy_mm_dd"] 给出:

0      2016-01-26
1      2016-01-19
2      2016-01-12
3      2016-01-05
       ...

【问题讨论】:

    标签: python bokeh


    【解决方案1】:

    自从最初发布此答案以来,Bokeh 已经进行了新的工作以使事情变得更简单。日期时间字段可以通过悬停工具直接格式化为日期时间,通过指定格式化程序,例如:

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

    不再需要在数据源中预先格式化日期字段,如下所示。欲了解更多信息,请参阅Formatting Tooltip Fields


    旧答案:

    截至 2016 年 2 月 4 日,没有快速的方法,issue is currently open 请求该功能在悬停工具中格式化日期/时间值。

    问题页面上也给出了当前可以使用的解决方法:

    为了解决这个问题,我需要添加一个带有单个字段的 ColumnDataSource,如下所示:

    source = ColumnDataSource(data=dict( time=df.map(lambda x: x.strftime('%d-%m-%Y')) ))

    然后我告诉我的工具提示显示("time", "@time")

    【讨论】:

    • 您好,请问您能否扩展您的请求,例如添加线条图形,以及如何使用工具提示?散景对于初学者来说不是很直观
    • @famargar 最好您为行字形提出一个单独的问题,甚至可能为工具提示提出一个单独的问题,提供您要解决的特定问题。您也可以搜索Github issues for Bokeh,并发布关于缺乏初学者文档的问题。
    猜你喜欢
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    相关资源
    最近更新 更多