2017-05-09 67 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) 
相關問題