首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bqplot在散点图中插入工具提示

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

Stack Overflow用户
提问于 2020-05-01 19:31:17
回答 2查看 798关注 0票数 4

我有一个pandas dataframe (df),有4列,名为' name ','nb','a‘和'b',描述一个人的特征,包括他的名字,他的id号('nb')和一些相关的值('a’和'b')。

代码语言:javascript
复制
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库来做到这一点。

我写了以下代码:

代码语言:javascript
复制
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行中遗漏了一些东西,字段参数可能不正确。

EN

回答 2

Stack Overflow用户

发布于 2020-05-01 22:15:05

使用bqplot工具提示,您只能引用实际Mark中的字段。所以像这样的东西应该是有效的:

代码语言:javascript
复制
def_tt = Tooltip(fields=['index', 'x', 'y'], formats = ['','.2f'],)

如果您希望从数据帧中选取不同的字段,则需要

1)创建输出小部件

2)定义将鼠标悬停在标记上时要运行的函数

3)将输出小部件设置为标记工具提示

4)将该函数设置为当您悬停标记时在输出小部件中显示元数据。

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2021-01-10 21:36:42

您还可以在dataframe中创建新列,将其用作名称并在工具提示中显示该名称:

代码语言:javascript
复制
fig = plt.figure()

def_tt = Tooltip(fields=['name'], show_labels=False)

df['labels'] = df.apply(lambda row: f'X: {row.x:%Y-%m-%d}, Y: {row.y:.2f}, Other Info: {row.custom_field}', axis=1)

scatt = plt.scatter(df.x, df.y, tooltip=def_tt,
                    # specify labels, but hide by default
                    names=df.labels, display_names=False)
fig

但它不支持丰富的格式化。甚至连换行符都没有:(

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61541657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档