前言
前两年,足迹地图小程序风靡朋友圈,一时间大家都流行晒自己的旅行地图。但是,笔者最近体验了好几款足迹地图的小程序,发现这些小程序虽然号称是足迹地图,但最多只是展示到省级别,无法精确到市级别,因此,笔者周末花了点时间,用Python来绘制自己的个人足迹地图,可以精确到市级别。
下面的部分,笔者将介绍如何简单地来绘制个人足迹地图。
首先我们需要安装以下Python的第三方模块:
echarts-china-cities-pypkg==0.0.9
echarts-china-provinces-pypkg==0.0.3
pyecharts==1.6.2
PyYAML==5.3.1
本项目的完整结构如下:
"htmlcode">
北京: - 延庆区 - 昌平区 - 海淀区 - 东城区 - 西城区 - 大兴区 - 朝阳区 上海: - 嘉定区 - 青浦区 - 松江区 - 宝山区 - 闵行区 - 奉贤区 - 浦东新区 - 崇明区 - 徐汇区 - 黄浦区 - 静安区 - 杨浦区 - 虹口区 - 金山区 - 长宁区 - 普陀区 天津: - 滨海新区 - 南开区 - 河西区 - 和平区 河北: - 保定市 - 廊坊市 山东: - 烟台市 - 青岛市 江苏: - 南京市 - 苏州市 - 扬州市 - 镇江市 - 无锡市 浙江: - 杭州市 - 绍兴市 - 宁波市 - 舟山市 - 湖州市 - 嘉兴市 - 台州市 - 金华市 江西: - 南昌市 - 九江市 安徽: - 黄山市 湖北: - 武汉市 湖南: - 长沙市 海南: - 海口市 - 三亚市 四川: - 成都市 广东: - 湛江市
"htmlcode">
g: 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; } } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】