首页 > 解决方案 > 在 python 中使用 plotly 和 ipywidgets 的交互式 Choropleth

问题描述

我正在尝试使用 Plotly 和 ipywidgets 为头部看起来如下所示的数据帧创建一个交互式 choropleth。

数据1.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)

我可以使用此代码获取下拉菜单,但它不打印绘图。

或者,我尝试对日期进行硬编码(在代码中注释),它确实返回了特定日期的图,但失去了交互性。

有人可以帮我获得可以让用户从下拉菜单中选择日期并相应地绘制等值线的情节吗?

标签: pythonmatplotlibplotlyipywidgetschoropleth

解决方案


推荐阅读