Используйте виджет для отображения фрагментов из файла / фрейма данных csv и передачи в атрибут всплывающей подсказки bqplot
Я пытаюсь отобразить определенную информацию (такую статистику, как возрастная группа, доход, уровни ожирения и т. Д.) Для каждого штата в США, используя bqplot. Я могу построить карту США, используя примеры, представленные на github bqplot. Но конструктор всплывающей подсказки использует имена столбцов из файла json, который также используется для фактического отображения карты. Я не знаю, как это переопределить, поэтому я решил использовать виджет (в идеале виджет-контейнер) для хранения данных, которые я хочу отображать для каждого состояния, и использовать метод on_hover (), предоставленный в bqplot.map; Фактически, я просто изменил код по ссылке ниже:
Контейнер как всплывающая подсказка не отображает содержимое
для отображения информации о конкретном состоянии
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. Так что любая помощь будет принята с благодарностью.
Спасибо!