Python 教你绘制个人旅行地图,就是那么牛
今天教大家玩一个别人没有玩过的东西,用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 教你绘制个人旅行地图,就是那么牛相关推荐
- python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)
python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等) 1. 效果图 2. 原理 2.1 依赖模块及安装 2.2 工程目录 2.3 依赖文件latlng.txt 经纬度 3 源码 ...
- python for ArcGIS 绘制北京市板块地图
python for ArcGIS 绘制北京市板块地图 结果预览 数据 完整代码 代码解读 需要利用python的arcpy模块绘制出北京市板块地图如下 结果预览 数据 原始板块边界数据如下 完整代码 ...
- python for ArcGIS 绘制西安市板块地图
python for ArcGIS 绘制西安市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出西安市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...
- python采用Basemap绘制完美中国地图
python采用Basemap绘制完美中国地图 摘要 Basemap的安装 下载Basemap安装文件 安装 Pyproj& Basemap Basemap的Helloword 使用Shape ...
- python for ArcGIS 绘制南京市板块地图
python for ArcGIS 绘制南京市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出南京市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...
- python for ArcGIS 绘制上海市板块地图
python for ArcGIS 绘制上海市板块地图 背景及思路 完整代码 结果截图 代码解读 后话 背景及思路 第一次用python操作 ArcGIS, 写下这篇博文记录一下.板块是房地产行业专有 ...
- python for ArcGIS 绘制天津市板块地图
python for ArcGIS 绘制天津市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出天津市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...
- python for ArcGIS 绘制郑州市板块地图
python for ArcGIS 绘制郑州市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出郑州市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...
- python for ArcGIS 绘制宁波市板块地图
python for ArcGIS 绘制宁波市板块地图 完整代码 代码解读 利用python的arcpy模块绘制出宁波市板块地图如下 完整代码 略 代码解读 整个实现过程包括3步 读数,即读取板块边界 ...
最新文章
- c语言字符串操作面试题,C语言常见字符串面试题.pdf
- java 多线程的使用_Java的多线程1:线程的使用
- Android之Fatal Exception: org.greenrobot.greendao.DaoException: Could not init DAOConfig
- vue或js解析文件excel表格js通过插件解析表格读取文件
- 单片机课程设计——交通灯
- 21天学通C语言-学习笔记(11)
- python爬虫刷网课答题_python实践:利用爬虫刷网课
- python安装什么版本比较好_安装好python之后 python哪个版本最好用
- Intent跳转地图应用(百度地图、高德地图)
- FMI飞马网 |【线上直播】持续集成在京东研发的落地及应用
- 东方财富开通融资融券知识测评问卷答案
- 391、Java框架46 -【Hibernate - 查询HQL、查询Criteria、查询标准SQL】 2020.10.19
- ChatGPT 登上了时代杂志封面,意味着什么?
- Redis为什么这么快?
- dash html中文文档,Dash Docset 创建指南
- 网络安全--数字签名/数字证书
- PCB拼板,那几条很讲究的规则~
- 电芯上料机,PLC是基恩士KV8000,用了一个16轴定位控制模块
- 准备使用vue制作开始一个的单机挂机放置类小游戏
- 向锦华北京个人演唱会倾情上演,用歌声唱出音乐梦想
热门文章
- 【代码实现】最新PyTorch机器学习与深度学习技术方法
- 打造智慧幼儿园!学会一招,快速实现
- Android 自定义view 图片编辑(画圆,画长方形,手势缩放)
- 在运行框中用命令快速打开应用程序
- ubuntu19.10 配置拨号上网 ASDL 不使用pppoeconf
- Python Numpy random.rayleigh() 瑞利分布
- 引领网页设计潮流的优秀网页作品赏析《第二季》
- WPF使用第三方字体(TTF字体)
- A.HS*团体.推荐平面设计
- drx功能开启后_KZ正式更名为DRX,LCK将解锁全部选手的“第一视角观赛”功能 | 电竞头条...