分享

Pyecharts地理图表绘制基础

 风声之家 2022-07-20 发布于江苏

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

确定

不看此公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多