(区块链现在也成了“牛夫人”)

前言

地图,在可视化中总是引人注目的。之前我们介绍了如何用R语言中的ggplot2画中国地图。本篇我们在python中搞定地图,主要结合我在BMW丰富的画地图经历总结一下,到lync很久没用python工作了,手生。主要介绍两种常用方法:

  • 用geopandas画中国地图

  • 用pyecharts画中国地图

整体流程

首先,获取地理文件信息,可以从国家地理中心(webmap.cn)下载,有各个省、市的。公众号后台回复“地图”,可以获取原数据与源码。https://github.com/hongyingyue/Tiny-skills-of-data。

  • 准备数据(包括地理目标数据和地理辅助数据)
  • 画地图作为背景
  • 画目标数据

geopandas

geopandas的步骤其实和R很像
准备数据

采用和上一篇中同样的数据进行演示,目标是画出各个城市的销量。表一,城市名(City)与城市属性(Total Year)的关系:

另一个需要的数据,城市的地理属性。表二,城市(City)与地理位置(经度、纬度)的关系:

程序的第一步便是读取以上数据:

data = pd.read_csv("../../data/map_R_province.csv")
data_agg = data.groupby(['City'])[['City']].size().reset_index(name='size')
city_name_map = pd.read_csv(open("../../assets/city_geocode_lookup.csv", encoding='gbk'))
data_agg = data_agg.merge(city_name_map, left_on='City', right_on='City', how='left')
geo_data_agg = gp.GeoDataFrame(data_agg, geometry=gp.points_from_xy(data_agg.Lon, data_agg.Lat))
print(geo_data_agg)

有了城市的位置,也有了城市的属性之后,在位置上画出属性的性质。画地图和目标:

def geo_china(df, size_column='size', title='map'):china_geod = gp.GeoDataFrame.from_file("../../assets/province.shp", encoding='gb18030')print(china_geod.head(5), china_geod.columns)ax = china_geod.plot(color='white', edgecolor='black')df.plot(ax=ax, color='red', markersize=df[size_column], alpha=0.5)#df.plot(ax=ax, column=size_column, cmap='Blues', linewidth=0.8, edgecolor='0.8')ax.set_axis_off()plt.show()

这里需要注意的是,虽然地理文件只读取了shp文件,但三个文件缺一不可,而且要放在同一路径下。效果如下:

pyecharts

上面的图并没有进行美化,所以看着和ggplot的美感还有差距。放心,python里还有一招,就是直接调用前端常用的包pyecharts来完成地图的制作,能够达到简化操作就画出漂亮的交互地图效果。

# https://github.com/pyecharts/pyecharts
# you should have Internet connect
from pyecharts.charts import Map,Geo
from pyecharts import options as optsprovince_dict = {'河南': 45.23, '北京': 37.56, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9,'浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 11, '澳门': 1, '陕西': 11, '四川': 7,'内蒙古': 3, '重庆': 3, '云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 1,'天津': 1, '其他': 1}province_char = [[item[0],item[1]] for item in province_dict.items()]
print(province_char)map = Map(init_opts=opts.InitOpts(width='1200px', height='800px'))
map.set_global_opts(title_opts=opts.TitleOpts(title="2019年"),visualmap_opts=opts.VisualMapOpts(max_=50))
map.add("China Map Example", data_pair=province_char, maptype='china', is_roam=True)
map.render(path="中国地图.html")

效果还是非常惊艳的,将生成的html在chrome里打开后,可以带交互效果,并自带了九段线,毕竟是国内bidu出品。输入数据也可以从csv由pandas读入,然后转化为字典形式,不过注意各省名字保持规范。缺点就是必须联网才能画出来,需要官方服务器传回数据。

联系方式

公众号YueTan

可视化:中国地图 python/ geopandas/ echarts相关推荐

  1. 数据可视化:利用Python和Echarts制作“用户消费行为分析”可视化大屏

    数据可视化:利用Python和Echarts制作"用户消费行为分析"可视化大屏 前言 实验目的: 准备工作: 一.创建项目: 二.建立数据库连接获取数据: 三.页面布局: 四.下载 ...

  2. echarts地图可视化 中国地图及各省级js文件分享

    最近在做关于echarts地图可视化时,需要绘制各省的地图,于是就搜索了大量的信息.踩了好多坑,大多数都是付费的. 有需要的搜索微信公众号[知音库],点击文件库进入领取 即可领取整理好的中国地图js文 ...

  3. Echarts可视化 中国地图来一下

    Echarts 数据可视化 ![在这里插入图片描述](https://img-blog.csdnimg.cn/97c7ba1d7a114a498c7e5868d13cf87d.png?x-oss-pr ...

  4. Axure教程:可视化中国地图下钻交互设计

    导读:在设置日常大屏报表设计工作中,我们会经常使用到地图下钻效果,今天作者教大家简单的使用axure软件来制作中国地图点击下钻的动效果,通过此原理可以做更细的下钻交互.一起来文中看一下吧~ 教程整体简 ...

  5. Python+Flask实现全国、全球疫情大数据可视化(二):网页页面布局+echarts可视化中国地图、世界地图、柱状图和折线图

    文章目录 相关文章 一.实现效果 二.页面布局html+css main.html main.css 三.echarts图表制作 1.全国累计趋势折线图ec_l1.js 2.全国趋势变化折线图ec_l ...

  6. 中国地图下钻式echarts图表数据处理

    首先加载全国路线图 findMap(){let _this = this,param = {}_this.chinaOpt = echarts.init(document.getElementById ...

  7. echarts 中国地图飞机实现demo 中国地图路线飞行 echarts飞行

    先看看效果图, 如果是你的菜 请往下看. html 代码 <template><div id="chineView"></div> </t ...

  8. 爬取全国各地区汽车销量情况并用中国地图可视化展示

    爬取全国各地区汽车销量情况并用中国地图可视化展示 项目介绍 网页详情 代码 爬取数据代码 将爬取的数据保存到文档中 中国地图可视化 运行效果 项目介绍 爬取2017年全国各省份的汽车销量情况(由于数据 ...

  9. Vue+Vuex+Axios+ECharts 画一个动态更新的中国地图

    一.生成项目及安装插件 # 安装 Vue Cli npm install vue-cli -g# 初始化项目 vue init webpack vue-china-map# 切到目录下 cd vue- ...

最新文章

  1. 各种NLP操作难实现?谷歌开源序列建模框架Lingvo
  2. another rejection from Cambridge MPhil in Management
  3. java 静态变量生命周期(类生命周期)
  4. cglib动态代理和jdk动态代理的区别与应用
  5. ORA-00018: maximum number of sessions exceeded 超出最大会话数
  6. 志愿者招募 | 2021 .NET Conf China
  7. python中transform用法_Python Wand transform()用法及代码示例
  8. 【2019杭电多校第七场1011=HDU6656】Kejin Player(期望dp+递推+逆元)
  9. c语言习题答案解析,C语言习题及答案1
  10. 打印 条码 CodeSoft JsBarCode
  11. ShFileOperation函数详解
  12. [油猴脚本开发指南]第一个脚本-HelloWorld
  13. 求生之路2 服务器 修改难度,求生之路2服务器指令及难度参数设置
  14. http劫持的原理与过程,HTTP被劫持怎么办?
  15. js时间戳转时间年月日时分秒
  16. 关于AMM解决滑点、无常损失问题的新认知 | TokenInsight
  17. 如何分析linux下的几种目标文件
  18. zpl php,php – 如何在垂直标签中垂直打印zpl条形码
  19. FPV Camera(RPI3+V2.1) | wfb_ng Release 23.01 | Ubuntu 20.04 xfce软解测试
  20. python3.5怎么打开_Python3.5文件修改操作实例分析

热门文章

  1. Jquery赋值和取值input,combobox,numberbox........
  2. Linux文件锁flock
  3. SpringMVC 中xml 配置多数据源
  4. Python 中的匿名函数,你滥用了吗?
  5. 布隆过滤器之Python+Redis
  6. 找出一个文件夹下后缀名为.jpg的文件
  7. PHP+MySQL登录注册,完整版,详细注释
  8. leetcode 64. Minimum Path Sum
  9. svn插件的所有链接
  10. 设置mysql最大连接数的方法