首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python绘制世界地图,涂个颜色放个国家 这都不是事儿

一个程序员的一天(文章末尾有大量表情包)

为什么是Python

先来聊聊为什么做数据分析一定要用Python或R语言。编程语言这么多种,Java, PHP都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用Python语言?

数据分析只是一个需求,理论上来讲,任何语言都可以满足任何需求,只是麻烦与简易之别。Python这门语言诞生也相当之早,它的第一个版本是26年前发表的,曾经(或者说当前)也被用于web开发,但是就流行程度来说,远远干不过Java和PHP。东方不亮西方亮,在与Java干仗失败的这20几年时光里,Python练就了一身独门武艺,是Java和PHP远远不及的(当然以后是不是能追得上来,目前还不好说)。你要说做个博客网站,Python的特长不在这里,PHP和Java也是分分钟的事情。你要说做个BBS网站,做个电商网站,PHP手到擒来。Python在这些方面和Java或者PHP竞争,基本就是作死的节奏,虽然也有django这样的框架,但流行程度远远不及其他语言。但在这些年默默的失败背后,有一帮研究人员用Python干出了一些惊天地泣鬼神的神器,使Python在数据研究领域做到了除了R语言以外基本无人能及的地步。

首先:我们需要安装Jupyter和Python,其次我们需要安装一个关键的模块Basemap,这个模块不同于我们平常的模块,通过pip install Basemap,这会报错

我们需要进入:https://www.lfd.uci.edu/~gohlke/pythonlibs/,进行下载,点进网址后摁下ctrl+F然后输入Basemap,你就会找到需要的模块进行下载

好一切准备完成后,我们先来画一个世界地图

代码如下

代码一开始的两行是为了导入模块~实际上的代码只有四行,plt.figure(figsize=(16,8))是定义了画布的大小,这一行你也可以不写,第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样是不是很简单,然后我们用一行代码把国家画出来,m.drawcountries(linewidth=1.5)

此时此刻,正在敲代码的我

但是我们今天需要的是我们祖国的地图~那么就有需要用basemap来确定经纬度,

就会显示出这个图

当然你要是想画出省的边界那就需要从这里:http://www.gadm.org/country,下载行政区规划shape文件,这里小编就不多解释了直接贴上一行源码m.readshapefile('CHN_adm_shp/CHN_adm1', 'states', drawbounds=True),然后就会有这样的效果,

接下来就是在地图上弄颜色了,总不可能让一直是这样白白的吧~

好接下来我们添加这五行代码

第2行的plt.gca函数名看上去很诡异,这是因为Python里使用了大量的缩写,这个gca就是一个缩写(可以自行百度),实际上就是要获得当前图形的座标轴。然后我们开始一个循环,把图形文件中各个省的多边形取出来,给它一个颜色,在这里我们统一放上红色,也就是这个facecolor='r',然后把这个多边形放在我们图座标轴座标轴上,然后就得到了下图

细心的人会看到我画的红色框~这个框是我们的中国台湾~但是没有被上颜色,那么我们就需要加入中国台湾的shape文件然后进行循环

嘿嘿这样我们的中国台湾也变成红色的了~

你要是想把各个省份的名字打出来看一下那么你就添加这几行代码

好接下来我们可以通过国家人口普查做出的统计来给自己的地图进行渲染(数据的话可以自己在“国家统计局”的网站上下载Excel文件之后转成csv文件,这个我就不详细解释了)

接下来我们可以根于人口密集程度进行渲染,那么首先我们就需要用到色彩映射表colormap,当然了matplotlib上有很多的选择~贴出代码

看~是不是一瞬间就变好看了?

完整版的代码小编就不放在这里了~因为有点长~单独截图就不好看了~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227A1DQAV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券