2017-05-09 29 views
1

配置背景虚化的提示我有一个简单pandas.DataFrame从pandas.DataFrame列

df = pd.DataFrame(
    { 
     "name": ['foo','bar'], 
     "kpi1": [1,2], 
     "kpi2": [2,1] 
    } 
) 

,我想用散景,以散点图。第一步是:

import bokeh.plotting as bpl 
import bokeh.models as bmo 
bpl.output_notebook() 

p = bpl.figure(tools=["hover"]) 

p.scatter(
    'kpi1', 
    'kpi2', source=source) 

bpl.show(p) # open a browser 

接下来,我想配置工具提示。特别是我想看看每个点的索引和相关的名字。以下是第二步:

source = bpl.ColumnDataSource.from_df(df) 
hover = bmo.HoverTool(
    tooltips=[ 
     ("index", "$index"), 
     ('Name', '$name') 
    ] 
) 

p = bpl.figure(tools=[hover]) 

p.scatter(
    'kpi1', 
    'kpi2', source=source) 

bpl.show(p) # open a browser 

这部分工作。工具提示包含两个字段(indexName),但后者填写???。我怎样才能让它从数据框中读取正确的列并将其用于工具提示的字段?

回答

1

这是因为您使用$而不是@调用工具提示。

正确的定义是

hover = bmo.HoverTool(
    tooltips=[ 
     ("index", "@index"), 
     ('Name', '@name') 
    ] 
) 

顺便说一句,你不需要导入bokeh.plotting和bokeh.models作为变量。你可以做sinmply:

from bokeh.plotting import figure, ColumnDataSource 
from bokeh.io import output_file, show 
from bokeh.models import HoverTool 

然后

# Create a ColumnDataSource from df: source 
source = ColumnDataSource(df) 

# Create the figure: p 
p = figure(tools=["hover"]) 

# Add circle glyphs to the figure p 
p.circle('kpi1', 'kpi2', source= source) 
show(p) 
hover = HoverTool(tooltips=[("index", "@index"), 
    ('Name', '@name')]) 

p.add_tools(hover) 
show(p) 
相关问题