今天教大家玩一个别人没有玩过的东西,用Python晒自己的旅行地图。听起来就很高级,这下要成为朋友圈最亮的仔了。 很多地图都只能显示到省级,无法显示到市级。今天就教大家如何用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,那么在最后的

    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;}}});

这一个小项目还是不错滴,很适合拿来练手,练完了还可以高调的炫一波,真是让人羡慕的操作。快点学起来吧,这一篇就到这里了,下一篇见。

Python 教你绘制个人旅行地图,就是那么牛相关推荐

  1. python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)

    python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等) 1. 效果图 2. 原理 2.1 依赖模块及安装 2.2 工程目录 2.3 依赖文件latlng.txt 经纬度 3 源码 ...

  2. python for ArcGIS 绘制北京市板块地图

    python for ArcGIS 绘制北京市板块地图 结果预览 数据 完整代码 代码解读 需要利用python的arcpy模块绘制出北京市板块地图如下 结果预览 数据 原始板块边界数据如下 完整代码 ...

  3. python for ArcGIS 绘制西安市板块地图

    python for ArcGIS 绘制西安市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出西安市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  4. python采用Basemap绘制完美中国地图

    python采用Basemap绘制完美中国地图 摘要 Basemap的安装 下载Basemap安装文件 安装 Pyproj& Basemap Basemap的Helloword 使用Shape ...

  5. python for ArcGIS 绘制南京市板块地图

    python for ArcGIS 绘制南京市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出南京市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  6. python for ArcGIS 绘制上海市板块地图

    python for ArcGIS 绘制上海市板块地图 背景及思路 完整代码 结果截图 代码解读 后话 背景及思路 第一次用python操作 ArcGIS, 写下这篇博文记录一下.板块是房地产行业专有 ...

  7. python for ArcGIS 绘制天津市板块地图

    python for ArcGIS 绘制天津市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出天津市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  8. python for ArcGIS 绘制郑州市板块地图

    python for ArcGIS 绘制郑州市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出郑州市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

  9. python for ArcGIS 绘制宁波市板块地图

    python for ArcGIS 绘制宁波市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出宁波市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...

最新文章

  1. c语言字符串操作面试题,C语言常见字符串面试题.pdf
  2. java 多线程的使用_Java的多线程1:线程的使用
  3. Android之Fatal Exception: org.greenrobot.greendao.DaoException: Could not init DAOConfig
  4. vue或js解析文件excel表格js通过插件解析表格读取文件
  5. 单片机课程设计——交通灯
  6. 21天学通C语言-学习笔记(11)
  7. python爬虫刷网课答题_python实践:利用爬虫刷网课
  8. python安装什么版本比较好_安装好python之后 python哪个版本最好用
  9. Intent跳转地图应用(百度地图、高德地图)
  10. FMI飞马网 |【线上直播】持续集成在京东研发的落地及应用
  11. 东方财富开通融资融券知识测评问卷答案
  12. 391、Java框架46 -【Hibernate - 查询HQL、查询Criteria、查询标准SQL】 2020.10.19
  13. ChatGPT 登上了时代杂志封面,意味着什么?
  14. Redis为什么这么快?
  15. dash html中文文档,Dash Docset 创建指南
  16. 网络安全--数字签名/数字证书
  17. PCB拼板,那几条很讲究的规则~
  18. 电芯上料机,PLC是基恩士KV8000,用了一个16轴定位控制模块
  19. 准备使用vue制作开始一个的单机挂机放置类小游戏
  20. 向锦华北京个人演唱会倾情上演,用歌声唱出音乐梦想

热门文章

  1. 【代码实现】最新PyTorch机器学习与深度学习技术方法
  2. 打造智慧幼儿园!学会一招,快速实现
  3. Android 自定义view 图片编辑(画圆,画长方形,手势缩放)
  4. 在运行框中用命令快速打开应用程序
  5. ubuntu19.10 配置拨号上网 ASDL 不使用pppoeconf
  6. Python Numpy random.rayleigh() 瑞利分布
  7. 引领网页设计潮流的优秀网页作品赏析《第二季》
  8. WPF使用第三方字体(TTF字体)
  9. A.HS*团体.推荐平面设计
  10. drx功能开启后_KZ正式更名为DRX,LCK将解锁全部选手的“第一视角观赛”功能 | 电竞头条...