将 bqplot 工具提示与数据框一起使用

Using bqplot tooltip with a dataframe

使用小部件显示来自 csv 的片段file/dataframe 并提供给 bqplot 的工具提示属性

我正在尝试使用 bqplot 显示美国每个州的某些信息(年龄组、收入、肥胖水平等统计数据)。我可以使用 bqplot github 上提供的示例绘制美国地图。但是工具提示构造函数正在使用 json 文件中的列名,该文件也用于实际显示地图。我不知道如何覆盖它,所以我决定使用一个小部件(最好是容器小部件)来保存我想为每个状态显示的数据,并使用 on_hover() 中提供的方法 bqplot.map;其实我只是修改了下面link中的代码:

Container as tooltip doesn't show contents

显示特定州的信息


import bqplot
import pandas as pd
import ipywidgets as ipw
from IPython.display import display, clear_output

res = pd.read_csv('data_files/clean_data.csv')
df = pd.DataFrame(res)

## using values for only one state
df_temp = df[df['State'] == 'NY']

out = ipw.Output()
def hover_handler(self,Dataframe):
        out.clear_output()
        with out:

            display(ipw.HTML(df_temp.to_html()))


geo = AlbersUSA()
scale_s =  OrdinalColorScale(domain=['Obese', 'Not Obese'], colors=['Red', 'Green'])
st_green = dict(zip(df['State'], list(obesity_list)))

geo = AlbersUSA()
scale_s =  OrdinalColorScale(domain=['Obese', 'Not Obese'], colors=['Red', 'Green'])
map_args = {'color': st_green,
              'scales': {'projection': geo, 'color': scale_s}, 
              'colors': {'default_color': 'Black'}}   

s_map = plt.geo(map_data='USStatesMap', **map_args)
s_map.toolip = out  # I am pointing tooltip to the out object
s_map.on_hover(hover_handler)
s_map
  1. 我不知道如何根据值 'Obese' 和 'Not obese' 更改每种状态下的颜色;

  2. 我在 Whosebug 上使用了 bqplot 示例和上面的 link 中的代码片段,但我不知道如何在我将鼠标悬停到另一个状态时更改信息;目前 df_temp 仅保存一个州的值,并且显示在我将鼠标悬停在地图上的任何位置。如何让小部件获取相关数据?

2.1 本质上,我需要它以表格格式显示结果:

State:NY
Status: Not Obese
Age_group | Obese | Not_obese
<18       |  %    |  %
19-30     |  %    |  %

我将上面所有字段的数据作为每个状态的数据框中的列。我是 ipywidgets 和 bqplot 的新手。因此,我们将不胜感激任何帮助。

谢谢!

对于第 2 点:

在您的 hover_handler 代码中,您需要捕获传递给函数的信息,并使用它来过滤您的主数据帧 (df)。尝试将您的 hover_handler 代码更改为以下代码,并查看传递给该函数的信息。然后弄清楚如何使用此信息将您的数据框过滤到相关状态。

    def hover_handler(map, hover_event):
            out.clear_output()
            with out:
                print(hover_event)