GeoViews:使用“多边形”几何体向chloropleth添加滑块

时间:2019-03-26 13:01:18

标签: geopandas geoviews

在这个问题Geoviews: Add a slider to choropleth map中,我正在尝试执行与OP类似的操作,但是并没有完全回答。简而言之,我有一个像这样的GeoDataFrame:

GeoDataFrame with Polygon geometries

我想通过GeoViews地图中的几何图形可视化Company,但是每个几何图形元素都有多年的使用时间。我想为额外的kdim年自动创建一个滑块,但是如果我将year指定为kdim,如下所示:

pre_anom

我收到以下错误:

gv.Polygons(gdf, kdims=['year'], vdims=['pre_anom']).opts(width=600, height=600, 
                                                      tools=['hover'], colorbar=True, 
                                                      cmap='RdBu', color_index='pre_anom',
                                                      symmetric=True, toolbar='above',
                                                      line_color='white')

1 个答案:

答案 0 :(得分:0)

作为参考,虽然与GeoViews单线无缝地配合使用非常好,但我有一个使用Param和Panel的解决方法:

import pandas as pd
import geopandas as gpd
import geoviews as gv
import param
import panel as pn
gv.extension('bokeh')

opts = dict(width=600, height=600, tools=['hover'], colorbar=True, cmap='RdBu', 
            color_index='pre_anom', symmetric=True, toolbar='above',line_color='white')

class PreMEI(param.Parameterized):
    year = param.Integer(default=2017, bounds=(1980, 2017))

    def chloro(self):
        return gv.Polygons(gdf[gdf['year']==self.year], vdims=['pre_anom'])

    @param.depends('year')
    def view_chloro(self):
        return gv.DynamicMap(self.chloro).opts(**opts)

p = PreMEI()
doc = pn.Row(p.param, p.view_chloro)

给予: enter image description here

顺便说一句,以出色且仍在开发中的软件包为整个PyViz团队提供道具!