地图可视化是数据分析中的一大难题,尤其是要展示大量地理位置数据的时候。PyDeck这个基于deck.gl的Python库就是专门解决这个痛点的,它能帮我们轻松搞定各种炫酷的地理数据可视化。
1.
安装配置
python
复制
pipinstallpydeck
装好后还得准备一个Mapbox的token,这样才能用上底图。去Mapbox官网注册一下就能拿到,免费版够咱们用了。
2.
基础图层展示
来看个最简单的例子,在地图上画几个点:
python
复制
importpydeckaspdk importpandasaspd
准备数据data=pd.DataFrame({ 'lat':[39.9042,31.2304,30.5928], 'lon':[116.4074,121.4737,114.3055], 'city':['北京','上海','广州'] })
创建图层layer=pdk.Layer( 'ScatterplotLayer', data, get_position=['lon','lat'], get_radius=20000, get_fill_color=[255,0,0] )
设置视角view=pdk.ViewState( latitude=35.0, longitude=110.0, zoom=4 )
渲染地图deck=pdk.Deck(layers=[layer],initial_view_state=view) deck.to_html('map.html')
3.
花式图层玩法
PyDeck最牛的地方是它支持超多种图层类型。想画路线?用PathLayer。要显示区域热力?HeatmapLayer安排上。甚至还能整出3D柱状图,用ColumnLayer就成。
python
复制
热力图示例heatmap_layer=pdk.Layer( 'HeatmapLayer', data, get_position=['lon','lat'], intensity=1, threshold=0.75 )
温馨提示:搞3D效果的时候最好调整下视角,不然可能看不出立体感。
4.
交互功能
PyDeck生成的地图不是死的,可以拖动、缩放、旋转,还能加上弹窗:
python
复制
layer=pdk.Layer( 'ScatterplotLayer', data, get_position=['lon','lat'], pickable=True, auto_highlight=True, get_radius=20000 )
tooltip={“html”:“城市:{city}”}
deck=pdk.Deck( layers=[layer], initial_view_state=view, tooltip=tooltip )
5.
高级技巧
要是想整点高级的,PyDeck还能搞定动态更新和自定义样式:
python
复制
自定义颜色函数defget_color(d):val=d['value'] ifval>100:return[255,0,0] return[0,255,0]
layer=pdk.Layer( 'ScatterplotLayer', data, get_position=['lon','lat'], get_fill_color=get_color )
搞数据可视化的时候,要是能用上PyDeck,真是不要太爽。不过玩的时候记得看着点内存占用,数据量太大容易卡住浏览器。
代码写完记得保存,别跟我一样搞了半天忘记保存,关掉就没了,哭都找不着调。