繁体   English   中英

如何在 HoverTool 上获取轴值 - Bokeh

[英]how to get the axis values on the HoverTool - Bokeh

我编写了一个从 .csv 文件读取并将其转换为 Pandas 数据帧的代码。 然后我继续用烛台绘制图表。 图表本身很好,但是当我尝试使用 HoverTools 时,我似乎无法将轴值添加到工具中。 我使用了列数据源,但我无法理解它。

  import pandas as pd

  from math import pi

  from bokeh.plotting import figure, show, output_file

  from bokeh.models import HoverTool

  df = pd.read_csv('/Users/robindhillon/Desktop/pyfiles/EURUSD.csv')

  df.columns = ['date','open','high','low','close','volume']

  df['date'] = pd.to_datetime([x[:-9] for x in 
  df['date'].squeeze().tolist()], dayfirst=True)

  inc = df.close > df.open
  dec = df.open > df.close
  w = 86400000


  hover = HoverTool(
    tooltips=[
        ('date',   '@date'),
        ('open',  '@open' ), 
        ('high', '@high'  ),
        ('low',   '@low'   ),
        ('close',  '@close'),
    ],

    formatters={
        'date' : 'datetime', 
        'open' : 'numeral',   
        'high' : 'numeral',
        'low'  : 'numeral',
        'close': 'numeral',                  
    },

    mode='vline'
)

   TOOLS = 'pan,wheel_zoom,box_zoom,reset,save,crosshair'

   p = figure(x_axis_type = 'datetime', tools=TOOLS, plot_width=1200, 
   title='test')

   p.xaxis.major_label_orientation = pi/4
   p.grid.grid_line_alpha = 0.3

   p.add_tools(hover)

   p.segment(df.date, df.high, df.date, df.low, color="black")

   p.vbar(df.date[inc], w, df.open[inc], df.close[inc], 
   fill_color="#12C98C", line_color="black")

   p.vbar(df.date[dec], w, df.open[dec], df.close[dec], 
   fill_color="#F2583E", line_color="black")

   output_file("candlestick.html", title="candlestick.py example")

   show(p)  # open a browser

以@ 开头的字段名称与ColumnDataSource列相关联。 例如,每当触发悬停时,字段名称“@date”将显示“date”列中的值。 如果悬停是针对第 17 个字形,则悬停工具提示将相应地显示第 17 个日期值。 如果您使用以 @ 开头且没有ColumnDataSource字段名称,则悬停工具将不起作用

import pandas as pd
from math import pi
from bokeh.plotting import figure, show, output_file
from bokeh.models import HoverTool, ColumnDataSource

df = pd.read_csv('/Users/robindhillon/Desktop/pyfiles/EURUSD.csv')
df.columns = ['date','open','high','low','close','volume']
df['date'] = pd.to_datetime([x[:-9] for x in 
df['date'].squeeze().tolist()], dayfirst=True)

inc = df.close > df.open
dec = df.open > df.close
w = 86400000

hover = HoverTool(
  tooltips=[
    ('date',   '@date{%F}'),
    ('open',  '@open' ), 
    ('high', '@high'  ),
    ('low',   '@low'   ),
    ('close',  '@close'),
  ],
  formatters={
    'date' : 'datetime', 
    'open' : 'numeral',   
    'high' : 'numeral',
    'low'  : 'numeral',
    'close': 'numeral',                  
  },
  mode='vline'
)

df['dateinc'] = df.date[inc]
df['openinc'] = df.open[inc]
df['closeinc'] = df.close[inc]
df['datedec'] = df.date[dec]
df['opendec'] = df.open[dec]
df['closedec'] = df.close[dec]

source = ColumnDataSource(df)

TOOLS = 'pan,wheel_zoom,box_zoom,reset,save,crosshair'

p = figure(x_axis_type = 'datetime', tools=TOOLS, plot_width=1200, 
title='test')

p.xaxis.major_label_orientation = pi/4
p.grid.grid_line_alpha = 0.3

p.add_tools(hover)
p.segment('date', 'high', 'date', 'low', color="black", source=source)
p.vbar('dateinc', w, 'openinc', 'closeinc', fill_color="#12C98C", line_color="black", source=source)

p.vbar('datedec', w, 'opendec', 'closedec', fill_color="#F2583E", line_color="black", source=source)

output_file("candlestick.html", title="candlestick.py example")

show(p)  # open a browser

除了@field_name悬停工具规范之外,还有一些“特殊变量”用于显示与数据源无关的特定信息。 要显示光标下 x 坐标的数据空间值,请使用$x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM