使用小部件显示来自 csv 文件/数据框的片段并提供给 bqplot 的工具提示属性
我正在尝试使用 bqplot 显示美国每个州的某些信息(统计数据,如年龄组、收入、肥胖水平等)。我可以使用 bqplot github 上提供的示例绘制美国地图。但工具提示构造函数使用 json 文件中的列名,该文件也用于实际显示地图。我不知道如何覆盖它,所以我决定使用一个小部件(理想情况下是一个容器小部件)来保存我想要为每个状态显示的数据,并使用 bqplot.map 中提供的 on_hover() 方法;其实我只是修改了下面链接中的代码:
显示特定状态的信息
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
我不知道如何根据“肥胖”和“不肥胖”的值来改变每个州的颜色;
我使用了 bqplot 示例中的代码片段和上面关于 stackoverflow 的链接,但是当我将鼠标悬停到另一个状态时,我不知道如何更改信息;当前
df_temp
仅保存一个状态的值,并且显示在我将鼠标悬停在地图上的任何位置。如何让小部件获取相关数据?
2.1 本质上,我需要它以表格格式显示结果:
State:NY
Status: Not Obese
Age_group | Obese | Not_obese
<18 | % | %
19-30 | % | %
我将上述所有字段的数据作为每个状态的数据框中的列。我是 ipywidgets 和 bqplot 的新手。因此,任何帮助将不胜感激。
谢谢!