文章目录
- 前言
- 中文官方文档和社区
- 一、什么是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类地图简单的学习实践,若有问题还请同学们在评论区中指正。