如何使用bqplot在散点图中插入工具提示

问题描述 投票:1回答:1

我有一个熊猫数据框(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行中缺少某些内容,字段参数可能不正确。

python pandas tooltip scatter bqplot
1个回答
0
投票

使用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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.