Интерактивный Choropleth с использованием сюжета и ipywidgets в python - PullRequest
2 голосов
/ 09 апреля 2020

Я пытаюсь создать интерактивный хороплет, используя 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 при потере интерактивности.

Может ли кто-нибудь помочь мне получить график, где Я могу позволить пользователю выбрать дату из выпадающего меню и соответственно нарисовать шрифт?

...