文章目录

    • 前言
      • 中文官方文档和社区
      • 一、什么是geo类地图?
      • 二、绘制geo类散点地图
      • 三、geo类地图的点样式设置
      • 四、geo动态轨迹图
      • 五、根据经纬度绘制点生成局部图
    • 总结

前言

我们知道,在数据可视化中的地图可视化分为map类地图和geo类地图,而现在我将介绍geo类地图,会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着我来一起学习学习吧!(由于我是一位初学者,若有不对的还望大家多多指教,蟹蟹~)

中文官方文档和社区

1.中文官网文档
它包含pyecharts中各个功能和图形的介绍和代码参数解析。链接如下:

https://pyecharts.org/#/zh-cn/intro

2.社区
它包含各种图形demo的项目案例代码和演示。链接如下:

https://gallery.pyecharts.org/#/README

【工具】查询颜色代码网站

http://tools.jb51.net/color/colorpicker

一、什么是geo类地图?

地图是我们在日常的数据可视化分析中是很常见的一种展示手段,不仅美观而且很大气,尤其是在大屏展示中更是扮演着必不可缺的角色。而geo类地图和map类地图最大的区别在于geo地图擅长画“点”,可以是根据经纬度画出坐标点,也可以根据地区名称画出该地区代表的点。

与map不同在于:
map中add的时候需要添加地图属性’china’,但是geo中只需要额外添加一句:geo.add_schema(maptype=“china”) # 设置地图类型

安装Pyecharts库
我们都知道pyecharts是一种非常强大的绘图python库,绘制的图形非常好看,并且有代表性,不仅仅是地图,还可以绘制条形图、饼图、词云图等等。所以我们现在绘制地图需要先安装pyecharts库,大家可到windows中搜索Anaconda Prompt (anaconda)【或者Win+R——cmd】并打开,使用以下两种任意方法运行即可:
方法一:

pip install pyecharts

方法二(使用清华镜像):

pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple

由于使用map需要在anaconda中下载地图拓展包,请大家下载以下拓展包(新版anaconda已经不需要手动下载):

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg

二、绘制geo类散点地图

从数据结构上看,geo对象接收的数据也是二维数组。
1.引入相关map包
代码如下:

from pyecharts import options as optsfrom pyecharts.charts import Geofrom pyecharts.faker import Faker

注意:运行代码前请使用正确的解释器(例如)


2.绘制geo类散点地图
代码如下:

c = (Geo().add_schema(maptype="china").add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())]).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-基本示例")).render("geo_base.html"))

效果图可以在VScode运行结果查看,也可以在目录中找到对应的html文件打开效果图(右键选择在浏览器打开或者在页面使用快捷键Ctrl+1)

效果图如下所示:

geo类散点地图的社区代码链接:

https://gallery.pyecharts.org/#/Geo/geo_base

三、geo类地图的点样式设置

由于点样式设置在社区有提供代码,我将不展示涟漪散点地图和热力地图的代码。

1.涟漪散点地图社区代码链接如下:

https://gallery.pyecharts.org/#/Geo/geo_effectscatter

2.热力地图社区代码链接如下:

https://gallery.pyecharts.org/#/Geo/geo_heatmap

四、geo动态轨迹图

1.引入相关map包
代码如下:

from pyecharts import options as optsfrom pyecharts.charts import BMapfrom pyecharts.globals import ChartTypefrom pyecharts.charts import Geofrom pyecharts.globals import ChartType, SymbolType

2.绘制点之间的箭头

首先在中国地图上设置你想要设置的点

代码如下:

c = (Geo().add_schema(maptype="china").add("",[("南宁", 1), ("北京", 66), ("湖南", 77), ("重庆", 88), ("四川", 99), ("上海", 111), ("云南", 88)],type_=ChartType.EFFECT_SCATTER, # 点样式color="#FF6666",label_opts=opts.LabelOpts(is_show=True,formatter='{b}') # 配置点的标签)

其次设置箭头所处于的起始点与终止点。

代码如下:

 .add("",[("南宁", "北京"), ("南宁", "湖南"), ("南宁", "重庆"), ("南宁", "四川"), ("南宁", "上海"), ("南宁", "云南")],type_=ChartType.LINES, effect_opts=opts.EffectOpts(symbol='arrow',# 移动点的样式symbol_size=10, color="#FFCCCC"),linestyle_opts=opts.LineStyleOpts(curve=0.2, # 线条弧度 type_='solid' # 线条类型 ),label_opts=opts.LabelOpts(is_show=False) # 配置线的标签)

完整代码

from pyecharts import options as optsfrom pyecharts.charts import BMapfrom pyecharts.globals import ChartTypefrom pyecharts.charts import Geofrom pyecharts.globals import ChartType, SymbolTypec = (Geo().add_schema(maptype="china").add("",[("南宁", 1), ("北京", 66), ("湖南", 77), ("重庆", 88), ("四川", 99), ("上海", 111), ("云南", 88)],type_=ChartType.EFFECT_SCATTER, # 点样式color="#FF6666",label_opts=opts.LabelOpts(is_show=True,formatter='{b}') # 配置点的标签).add("",[("南宁", "北京"), ("南宁", "湖南"), ("南宁", "重庆"), ("南宁", "四川"), ("南宁", "上海"), ("南宁", "云南")],type_=ChartType.LINES, effect_opts=opts.EffectOpts(symbol='arrow',# 移动点的样式symbol_size=10, color="#FFCCCC"),linestyle_opts=opts.LineStyleOpts(curve=0.2, # 线条弧度 type_='solid' # 线条类型 ),label_opts=opts.LabelOpts(is_show=False) # 配置线的标签).set_global_opts(title_opts=opts.TitleOpts(title="南宁市Geo线段")))c.render_notebook()

效果图如下所示:
(以下点为我想去旅游的城市哈哈哈哈,大家可随意选择点)

五、根据经纬度绘制点生成局部图

1.引入相关map包
代码如下:

from pyecharts import options as optsfrom pyecharts.charts import Geofrom pyecharts.globals import ChartType, SymbolType

2.根据经纬度绘制点

添加一个坐标点或者绘制某一个点(需要该点的经纬度)
查询经纬度位置 (在浏览器打开,在该地址后面,加上你要查询的地址),再依次设置字体样式。

代码如下:

g = Geo()g.add_schema(maptype="广西")g.add_coordinate('兴宁区', 108.6383056640625,23.980397108430427)g.add("",data_pair = [('兴宁区',10)],type_=ChartType.EFFECT_SCATTER, symbol_size=5)g.set_series_opts(label_opts = opts.LabelOpts(formatter = '{b}',# 不设置标签格式自动显示纬度数值 font_size = 20 ) ) 

完整代码:

from pyecharts import options as optsfrom pyecharts.charts import Geofrom pyecharts.globals import ChartType, SymbolTypeg = Geo()g.add_schema(maptype="广西")g.add_coordinate('兴宁区', 108.6383056640625,23.980397108430427)g.add("",data_pair = [('兴宁区',10)],type_=ChartType.EFFECT_SCATTER, symbol_size=5)g.set_series_opts(label_opts = opts.LabelOpts(formatter = '{b}',# 不设置标签格式自动显示纬度数值 font_size = 20 ) ) g.render_notebook()

效果图如下所示:
(以下点为我生活的市区,同学们可随意选择点)

总结

以上为我在学习数据可视化中关于geo类地图简单的学习实践,若有问题还请同学们在评论区中指正。