Я пытаюсь создать интерактивный хороплет, используя Plotly и ipywidgets для кадра данных, голова которого выглядит так, как показано ниже.
Data1.head ()
График суммирует значения для всех доступных дат в кадре данных для каждого округа.
Вывод для доступных FIPS (агрегированных значений)
Я хочу отфильтровать значения для определенной даты, используя раскрывающееся меню и нанесите значения, соответствующие этой дате.
import matplotlib.pyplot as plt
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
from plotly import *
import plotly.figure_factory as ff
import plotly.graph_objects as go
date = widgets.Dropdown(
options=['All'] + Data1.date.unique().tolist(),
value='All',
description='Date:',
)
# date = Data1['date'][1] # If I use this instead of the widget defined above, the code works (at the cost of interactivity)
def func(date):
values = Data1[Data1['date']== date]['Infected'].tolist()
fips = Data1[Data1['date']== date]['Fips'].tolist()
colorscale = [
'rgb(193, 193, 193)',
'rgb(239,239,239)',
'rgb(195, 196, 222)',
'rgb(144,148,194)',
'rgb(101,104,168)',
'rgb(65, 53, 132)'
]
fig = ff.create_choropleth(
fips=fips, values=values, scope=['IL'],
binning_endpoints=[14348, 63983, 134827, 426762, 2081313], colorscale=colorscale,
county_outline={'color': 'rgb(255,255,255)', 'width': 0.5}, round_legend_values=True,
legend_title='Infected cases by County', title='Illinois State'
)
fig.layout.template = None
fig.show()
interactive(func, date= date)
Я могу получить раскрывающееся меню, используя этот код, но он не печатает график.
В качестве альтернативы я попытался жестко закодировать дату (закомментировано в коде), и она вернула график для указанной даты c при потере интерактивности.
Может ли кто-нибудь помочь мне получить график, где Я могу позволить пользователю выбрать дату из выпадающего меню и соответственно нарисовать шрифт?