地理视图:将滑块添加到Choropleth地图

时间:2018-11-13 00:35:35

标签: python bokeh holoviews geoviews

我正在使用GeoViews,我想知道是否可以在GeoViews中将滑块作为输入来作为拟人化地图的输入。

我在gdf中还有另一个变量,即year。可以使用滑块显示按年份显示的Total_Crimes吗?

编辑:添加了更多信息:

gdf数据框具有以下变量。

beat_num    Year    Total_Crimes    beat    district    sector  geometry
111 2012    1449    1   01  1   POLYGON ((-87.62451050462798 41.88829675314376...
111 2013    1645    1   01  1   POLYGON ((-87.62451050462798 41.88829675314376...
111 2014    1636    1   01  1   POLYGON ((-87.62451050462798 41.88829675314376...
111 2015    1642    1   01  1   POLYGON ((-87.62451050462798 41.88829675314376...
111 2016    1836    1   01  1   POLYGON ((-87.62451050462798 41.88829675314376...

我基本上将gdf按 beat_num Year 分组,并找出每个组的Total_Crimes。 gdf的数据类型:

beat_num         int64
Year             int64
Total_Crimes     int64
beat            object
district        object
sector          object
geometry        object 

完整代码:

import geopandas as gpd
import holoviews as hv
import geoviews as gv
import geoviews.tile_sources as gts

hv.extension('bokeh')
geometries = gpd.read_file('geo_export_3b3b25c2-a600-40c3-a663-2f7ad8dc2b9c.shp')
#Reading the shape file for each beat_num.

geometries['beat_num']=geometries['beat_num'].apply(int)
#Converted the beat_num to integers

gdf = gpd.GeoDataFrame(pd.merge(ca_df, geometries))
#dataframe ca_df has total crimes for each beat_num and each year and merged it with geometries to get shape for each beat_num. 

plot_opts = dict(tools=['hover'], width=750, height=700, color_index='Total_Crimes',
                 colorbar=True, toolbar='above', xaxis=None, yaxis=None)
gts.ESRI *gv.Polygons(gdf, vdims=['beat_num', 'Total_Crimes'], label='Chicago Crime Data').opts(plot=plot_opts,style=dict(alpha=0.7))

输出: Output

1 个答案:

答案 0 :(得分:1)

是的,如果需要,在GeoViews中总是可以有一个滑块!我不能从代码片段中清楚地知道您在做什么,但是我猜测gdf是一个GeoPandas数据框,大概会将纬度和经度作为关键维度。要获得滑块,则需要为年份添加一个附加的关键尺寸('kdim')。如果尚未以这种方式汇总数据,则可能还需要按年份汇总数据。 pyviz.org和geoviews.org上有一些示例可以帮助您入门,或者可以发布更完整的示例。