AwesomeTang 点点GIS 2022-07-16 17:54 发表于山西 本文摘自和鲸社区商业数据分析训练营业教案,已获得原作者和和鲸社区授权 如何学习 安装ArcGIS Pro的同学可以直接打开jupyter进行学习,ArcGIS Pro内置了Anconda,具体使用方法参考以下博文https://mp.weixin.qq.com/s/13WM_-iZINqiJrtsofHCwQ 或者直接通过和鲸社区在线工具ModelWhale直接运行https://www./mw/workspace/index 地理坐标系 在Pyecharts中常见的地理系图表有三种——区域地图(MAP),点地图(GEO)和百度地图(BMAP),不过使用百度地图还需要去百度地图开发者平台申请授权,这里就不演示了。 在地理系图表中,常见的地理位置数据都已经事先定义好了,比如北京的经度,纬度都是已知的,所以不需要你再传入经纬度数据,需要的是你提供北京对应的数值是多少; 数据格式也都是data=[("北京", 23), ("上海", 33)]等形式; 区域地图(Map)# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Map() chart.add( "", data, # 必须的参数,指定地图类型 maptype='china' ) chart.render_notebook() 大部分情况下,我们选择使用Map其实是希望能够通过地图上的区域来反映数值 这就需要配合Pyecharts中的视觉组件(visualMap)将数值直接通过颜色反映在地图之上;# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Map() chart.add( "", data, # 必须的参数,指定地图类型 maptype='china' ) # 全局配置项 chart.set_global_opts( # 视觉组件是必须的,需要通过视觉组件的颜色来展示数据大小 visualmap_opts=opts.VisualMapOpts(max_=100), ) chart.render_notebook() 对于我个人而言,我在使用Map的时候通常会选择将地图上的小红点给去掉 可以通过参数is_map_symbol_show=False设置不显示小红点;# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Map() chart.add( "", data, # 必须的参数,指定地图类型 maptype='china', # 不显示红点 is_map_symbol_show=False, ) # 全局配置项 chart.set_global_opts( # 视觉组件是必须的,需要通过视觉组件的颜色来展示数据大小 visualmap_opts=opts.VisualMapOpts(max_=100), ) chart.render_notebook() 点地图(GEO) 与MAP将数据映射到每块区域不一样,GEO是将数据映射到地图上的一个一个的点; GEO支持如下Scatter(散点),effectScatter(带涟漪效果的散点),Line(流向图),HeatMap(热力图)四种展现形式; Scatter# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Geo() chart.add_schema( maptype='china' ) chart.add( "", data ) chart.render_notebook() 看起来和Map的默认效果一致,其实不然,使用GEO地图的时候,鼠标移动到区域上是不会有数据提示的 使用Geo-Scatter我们可以配合视觉组件完成更多效果; 通过散点的大小反映数值; 通过颜色的透明度反映数值; 通过颜色反映数值 In [51]:# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Geo() chart.add_schema( maptype='china' ) chart.add( "", data, type_='scatter' ) # 全局配置项 chart.set_global_opts( # 视觉组件是必须的,需要通过视觉组件的图形大小来展示数据大小 visualmap_opts=opts.VisualMapOpts( type_='size', ), ) chart.render_notebook() effectScatter 与Geo-Scatter使用方法基本一致,不一样的就是effectScatter的散点是带涟漪效果的; 不过在大数据量时不太建议使用,这种动态效果非常消耗资源; In [52]:# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Geo() chart.add_schema( maptype='china' ) chart.add( "", data, type_='effectScatter' ) chart.render_notebook() 热力图 很多小伙伴喜欢使用的图表,用来展现数据的密集程度非常直观;一般称之为热力图 In [53]:# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Geo() chart.add_schema( maptype='china' ) chart.add( "", data, type_='heatmap' ) # 全局配置项, HeatMap需要配合视觉组件 chart.set_global_opts( visualmap_opts=opts.VisualMapOpts( type_='color' ), ) chart.render_notebook() VisualMapOpts:视觉映射配置项 视觉组件配置项,在Pyeharts中也是一个非常常用的配置,可以设置通过颜色或者图形大小来反映数据;# 虚假示例数据 data = [('广东', 61), ('湖北', 85), ('湖南', 115), ('四川', 137), ('重庆', 119), ('黑龙江', 66), ('浙江', 117), ('山西', 52), ('河北', 80), ('安徽', 99), ('河南', 101), ('山东', 75), ('西藏', 53)] chart = Map() chart.add( "", data, # 必须的参数,指定地图类型 maptype='china' ) # 全局配置项 chart.set_global_opts( # 视觉组件是必须的,需要通过视觉组件的颜色来展示数据大小 visualmap_opts=opts.VisualMapOpts( max_=100, # 设置映射范围的大小 min_=50, dimension=0, # 组件映射维度 type_='color', # 通过颜色放映数据,除此之外还有 size(图形大小),opacity(透明度)两种形式 range_color=['blue', 'green', 'yellow', 'red'] # 映射的颜色防伪 ), ) chart.render_notebook() OD图 用于展示数据的流向,你的数据需要包含点(起点)到点(重点)的信息,也就OD图chart = Geo() chart.add_schema(maptype="china") chart.add( "广州出发", # 数据格式(from, to) data_pair=[("广州", "上海"), ("广州", "北京"), ("广州", "西宁"), ("广州", "重庆")], type_='lines' ) chart.render_notebook() 添加自定义坐标点 常规的地理位置,如省份,城市这些位置的经纬度Pyecharts中都内置包含了,不过有的时候,我们需要添加一些自定义点进行数据分析,这时候就需要我们自己先将位置的具体经纬度传入Geo实例中,然后再到图表中进行展现,代码如下所示: In [55]:chart = Geo() # 添加自定义坐标点 chart.add_coordinate('x', 116.397428, 39.90923) chart.add_coordinate('y', 112.398615, 29.91659) chart.add_schema(maptype="china") chart.add("", [('x', 1), ('y', 2)]) chart.render_notebook() 更多学习资料 本文原作者微信公众号如下 AwesomeTang Data-Analysis related. 数据分析相关技术域,爬虫,数据可视化,AI,SQL等等🌈🌈🌈 14篇原创内容 公众号 和鲸社区个人主页如下https://www./home/user/profile/5b094a7be811fa77fb099351 和鲸社区 和鲸社区 和鲸社区,拥有超过20万数据科学家与AI开发工程师用户,是中国AI与数据科学领域人才质量、数量、活跃度上均有亮眼表现的社区之一。了解社区动态,关注数据科学与AI开发内容,聚焦前沿探索。 192篇原创内容 公众号 商业数据可视化课程https://www./home/activity/detail/62a30b40ac8fed66250b216b 确定 不看此公众号 |
|