前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图。但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔者周末花了点时间,用Python来绘制自己的个人足迹地图,可以精确到市级别。
  下面的部分,笔者将介绍如何简单地来绘制个人足迹地图。
  首先我们需要安装以下Python的第三方模块:

echarts-china-cities-pypkg==0.0.9
echarts-china-provinces-pypkg==0.0.3
pyecharts==1.6.2
PyYAML==5.3.1

  本项目的完整结构如下:

  我们在项目中采用YAML文件来配置自己旅行过的省以及省下面的市,笔者的配置文件如下:

北京:- 延庆区- 昌平区- 海淀区- 东城区- 西城区- 大兴区- 朝阳区
上海:- 嘉定区- 青浦区- 松江区- 宝山区- 闵行区- 奉贤区- 浦东新区- 崇明区- 徐汇区- 黄浦区- 静安区- 杨浦区- 虹口区- 金山区- 长宁区- 普陀区
天津:- 滨海新区- 南开区- 河西区- 和平区
河北:- 保定市- 廊坊市
山东:- 烟台市- 青岛市
江苏:- 南京市- 苏州市- 扬州市- 镇江市- 无锡市
浙江:- 杭州市- 绍兴市- 宁波市- 舟山市- 湖州市- 嘉兴市- 台州市- 金华市
江西:- 南昌市- 九江市
安徽:- 黄山市
湖北:- 武汉市
湖南:- 长沙市
海南:- 海口市- 三亚市
四川:- 成都市
广东:- 湛江市

  接着我们利用Python脚本来生成足迹地图。先是全国地图,用于显示省和直辖市的情况,china_map.py的代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/5/31 9:21 上午
# 绘制个人足迹地图:全国范围
import yaml
from pyecharts.charts import Map
from pyecharts import options as opts# 省和直辖市
with open("travel_config.yml", 'r', encoding='utf-8') as ymlfile:province_city_dict = yaml.safe_load(ymlfile)province_dict = dict(zip(province_city_dict.keys(), [1]*len(province_city_dict.keys())))
print(province_dict)# maptype='china' 只显示全国直辖市和省级
map = Map(init_opts=opts.InitOpts(width='1200px', height='800px'))
map.set_global_opts(title_opts=opts.TitleOpts(title="个人足迹地图"),visualmap_opts=opts.VisualMapOpts(max_=1, is_piecewise=True,pieces=[{"max": 1, "min": 1, "label": "去过", "color": "#4EA397"},{"max": 0, "min": 0, "label": "未去过", "color": "#FFFFFF"},])  #最大数据范围,分段)
map.add("个人足迹地图", data_pair=province_dict.items(), maptype="china", is_roam=True)
map.render('全国.html')

运行上述脚本,会生成全国.html。为了保证图片居中显示,我们对该HTML中的下面一行:

<div id="a438407081634ceab6af1c965034ae16" class="chart-container" style="width:1200px; height:800px;"></div>

的样式(style)增加如下内容:

margin:auto;top:30px

全国范围的足迹地图效果图如下:

  接着,我们来生成每个省市的足迹地图,利用province_map.py脚本,代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/5/31 10:01 上午
# 绘制个人足迹地图:省市范围
import yaml
from pyecharts.charts import Map
from pyecharts import options as opts# 省和直辖市下面的市
with open("travel_config.yml", 'r', encoding='utf-8') as ymlfile:province_city_dict = yaml.safe_load(ymlfile)for province, cities in province_city_dict.items():map = Map(init_opts=opts.InitOpts(width='1200px', height='800px'))map.set_global_opts(title_opts=opts.TitleOpts(title="个人足迹地图-%s" % province),visualmap_opts=opts.VisualMapOpts(max_=1, is_piecewise=True,pieces=[{"max": 1, "min": 1, "label": "去过", "color": "#4EA397"},{"max": 0, "min": 0, "label": "未去过", "color": "#FFFFFF"},])  #最大数据范围,分段)city_dict = dict(zip(cities, [1]*len(cities)))map.add("个人足迹地图-%s" % province, data_pair=city_dict.items(), maptype=province, is_roam=True)map.render('./provinces/%s.html' % province)print("生成个人足迹地图-%s 成功" % province)

这时,会在provinces目录下生成每个省或者直辖市的足迹地图,我们分别对每个HTML进行修改,保证图片居中。我们在这里只展示三个省市的情况:



  最后一步,也是最为关键的一步,就是我们要打通全国足迹地图和每个省市足迹地图的联系,也就是说,我们点击全国足迹地图上去过的省份,那么可以点击进去查看该省市下的足迹地图情况,比如说去过哪些市。
  对此,我们修改生成的全国.html文件,假设该地图的图像句柄为chart_a438407081634ceab6af1c965034ae16,那么在最后的<script>对中添加内容如下:(确保点击去过的省份,可以查看该省市的足迹地图)

chart_a438407081634ceab6af1c965034ae16.on('click', function (param){var selected = param.name;if (selected) {switch(selected){case '北京':location.href = "provinces/北京.html";break;case '上海':location.href = "provinces/上海.html";break;case '天津':location.href = "provinces/天津.html";break;case '四川':location.href = "provinces/四川.html";break;case '安徽':location.href = "provinces/安徽.html";break;case '山东':location.href = "provinces/山东.html";break;case '江苏':location.href = "provinces/江苏.html";break;case '江西':location.href = "provinces/江西.html";break;case '河北':location.href = "provinces/河北.html";break;case '浙江':location.href = "provinces/浙江.html";break;case '海南':location.href = "provinces/海南.html";break;case '湖北':location.href = "provinces/湖北.html";break;case '湖南':location.href = "provinces/湖南.html";break;case '广东':location.href = "provinces/广东.html";break;default:break;}}});

  关于足迹地图的视频,可以查看笔者的公众号文章,网址为:https://mp.weixin.qq.com/s?__biz=MzU2NTYyMDk5MQ==&mid=2247484682&idx=1&sn=7805d4149684829fcdbf1324a6e11aeb&chksm=fcb9bc9acbce358cbd0cec06493fbd384b844dd25143e7209dc2523c7c067d1b60e34d1ff62a&token=656172195&lang=zh_CN#rd 。

  本项目已经开源至Github,网址为:https://github.com/percent4/personal_travel_map 。
  本文只是笔者对于足迹地图(精确到市级别)的demo,后续我们还可以做更多有意思的事情~

Python之绘制个人足迹地图相关推荐

  1. 基于Python(Pyecharts)绘制个人足迹地图【100010383】

    Python之绘制个人足迹地图 前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别 ...

  2. python绘制简单城市剪影图_Python之绘制个人足迹地图

    前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔者周 ...

  3. 用 Python 绘制个人足迹地图

      前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔 ...

  4. Python实战:200行代码绘制个人足迹地图!

    前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔者周 ...

  5. 用Python绘制个人足迹地图!你去过哪些地方它比你清楚!

      前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔 ...

  6. 利用Python快速绘制海报级别地图

    利用Python快速绘制海报级别地图 1.简介 2.利用prettymaps快速制作海报级地图 2.1 prettymaps的几种使用方式 2.1.1 圆形模式 2.1.2 圆角矩形模式 2.1.3 ...

  7. 基于Python的个人足迹地图绘制设计

    Python之绘制个人足迹地图 前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别 ...

  8. Tornado+Pyecharts+LayUI搭建个人足迹地图服务

      在之前的文章 Python之绘制个人足迹地图 中,笔者采用Pyecharts和手动修改HTML代码的方式实现了个人足迹地图.本文将会介绍利用Tornado+Pyecharts+LayUI来搭建个人 ...

  9. 用Python来绘制自己的个人足迹地图,精确到市级别

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图.但是, ...

最新文章

  1. 001.android初级篇之ToolBar
  2. ArrayList 集合
  3. 浅谈format格式化输出
  4. 迷宫android游戏代码,C++打造迷宫游戏,直接上代码
  5. 怎么把网页源码家入hexo博客_一款被大厂选用的 Hexo 博客主题
  6. eureka对比Zookeeper:
  7. 20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结
  8. 5.19 - Stacks and Queues
  9. 广西壮族自治区直流充电桩说明书下载_鄂州便携式直流充电桩
  10. 管理者和领导者的区别_见到一个领导者时如何识别
  11. 阿里达摩院420集python_阿里达摩院推荐的420集的python教程,入门到精通简直不要太简单...
  12. 面试题,微信朋友圈的“赞”和“评论”为啥是隐藏操作的?
  13. 微积分:2.2泰勒公式函数极值定积分
  14. 计算机论文注释范例,论文的注释怎么加(范例解读)
  15. 心态-《当下的力量》书中的精髓:了解我们痛苦的根源,学会让自己活在当下,摆脱痛苦。
  16. matlab中zeta函数,黎曼zeta函数是什么,具体点
  17. 无线鼠标没反应怎么办
  18. yum install clickhouse* 的一堆报错
  19. 51单片机IIC通信协议
  20. 实验三 基本IO口扩展实验

热门文章

  1. 《微信小程序案例12》图片识别功能
  2. 千耘导航助力新疆精河县数万亩棉花播种
  3. AutoSAR系列讲解(实践篇)7.1-DaVinci Developer使用初探
  4. memcacheredis构建缓存服务器
  5. java date类型大小比较_java中date类型如何比较大小
  6. MAC压缩文件 密码 加密ZIP
  7. VsCode同步配置到另一台设备
  8. labview 网络通讯 TCP
  9. Windows10下Tensorflow启用GPU加速,显卡GTX1060,踩坑记录
  10. 买了新手机却不适应?教你一步克隆旧手机信息