我有一个熊猫数据框(df),它有4列,分别名为'name','nb','a'和'b',用一个人的名字,他的ID号('nb')和一些与其关联的值(“ a”和“ b”)。
import pandas as pd
data = {
"name": ["Thomas", "John", "Anna", "Ben", "Arlette"],
'nb': [1,2,3,4,5],
"a": [0, 2, 13, 43, 90],
"b": [4, 24, 31, 2, 3],
}
df = pd.DataFrame(data)
我想用“ a”和“ b”值创建一个散点图,其中名称和ID将出现在工具提示中。我想我可以使用bqplot库来做到这一点。
我写了以下代码:
from bqplot import pyplot as plt
from bqplot import Tooltip
from bqplot import Scatter
fig = plt.figure(title='My title')
def_tt = Tooltip(fields=['name','nb'], formats = ['','.2f'], labels = ['Name','Nb'],show_labels = True )
chart = plt.scatter(df["a"],df["b"], colors = ['red'], tooltip = def_tt, stroke = 'red', unhovered_style ={'opacity':0.5})
fig
但是工具提示是空白的,尽管显示了标签。我认为我在def_tt行中缺少某些内容,字段参数可能不正确。
使用bqplot工具提示,您只能引用实际标记中的字段。所以这样的事情应该起作用:
def_tt = Tooltip(fields=['index', 'x', 'y'], formats = ['','.2f'],)
如果要从数据框中选取其他字段,则需要
1)创建输出小部件
2)定义当您将鼠标悬停在标记上时要运行的函数
3)将输出小部件设置为标记工具提示
4)设置该功能以将鼠标悬停在输出小部件中显示您的元数据标记。
from bqplot import pyplot as plt
from bqplot import Tooltip
from bqplot import Scatter
from ipywidgets import Output
fig = plt.figure(title='My title')
out = Output(). # 1
def def_tt(_, event): # 2
out.clear_output()
with out:
print(df.loc[event['data']['index'], 'name'])
chart = plt.scatter(
df["a"], df["b"], colors = ['red'],
tooltip = out, # 3
stroke = 'red', unhovered_style ={'opacity':0.5}
)
chart.on_hover(def_tt) # 4
fig