在datafram中使用bqplot工具提示

2024-06-25 23:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

使用widget显示csv文件/数据帧的片段,并将其馈送到bqplot的工具提示属性

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

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. 每个肥胖状态下的颜色都不能改变

  2. 我在stackoverflow上使用了bqplot示例中的代码片段和上面的链接,但我不知道如何在悬停到另一个状态时更改信息;当前df_temp只保存一个状态的值,并且在我悬停在地图上的任何地方都会显示。如何让widget获取相关数据?

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

^{pr2}$

我把上面所有字段的数据作为每个状态的数据帧中的列。我是ipywidgets和bqplot的新手。所以,任何帮助都将不胜感激。在

谢谢你!在


Tags: 文件csv数据import信息mapdf状态
1条回答
网友
1楼 · 发布于 2024-06-25 23:08:04

对于第2点:

hover_handler代码中,需要捕获传递给函数的信息,并使用它来过滤主数据帧(df)。请尝试将hover_handler代码更改为下面的代码,并查看传递给函数的信息。然后找出如何使用这些信息来过滤数据帧,使其仅处于相关状态。在

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

相关问题 更多 >