将 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
我不知道如何根据值 'Obese' 和 'Not obese' 更改每种状态下的颜色;
我在 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)
使用小部件显示来自 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
我不知道如何根据值 'Obese' 和 'Not obese' 更改每种状态下的颜色;
我在 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)