[python] 几行代码也能玩转世界地图?

Posted Train丶Young

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python] 几行代码也能玩转世界地图?相关的知识,希望对你有一定的参考价值。

前些天收到某位大佬的求助,说是需要给根据数据给安徽省地市来绘制个图,用不同颜色来直观表示数据。当时就想到了Python提供一个绘制地图的库—— Pyecharts。

Pyecharts是一个用于生成echarts图表的类库, 它是百度开源的一个数据可视化 JS 库。Echarts详情点击这里。

安装库很简单,大家只要在环境变量里有添加过Python和其pip工具就OK。

pip install Pyecharts

当然有了该库后还不够,需要地图文件,所以以下几个需要按需安装

 

  1. 全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图
  2. 中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区
  3. 中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市
  4. 中国县区级地图: echarts-china-counties-pypkg (4.1MB):2882 个中国县·区
  5. 中国区域地图: echarts-china-misc-pypkg (148KB):11 个中国区域地图,比如华南、华北。

 

如上使用pip install 命令完成安装即可。

基本应用::基本地图绘制

如果我们需要绘制一副安徽省的地图,并且我们给每个地市一定的数据,让地图在着色上表现出其数据的差异,这时,pyecharts是特别方便的一个应用。

from pyecharts import Map 
city = [‘合肥市‘, ‘芜湖市‘, ‘宿州市‘,‘淮北市‘,‘亳州市‘,‘阜阳市‘,‘蚌埠市‘,‘淮南市‘,‘滁州市‘,‘六安市‘,‘马鞍山市‘,‘安庆市‘,‘铜陵市‘,‘宣城市‘,‘池州市‘,"黄山市"]
area = [11445.1, 6026.05, 9938.77, 2741.39, 8521.23, 10118.17,5950.72, 5532.30, 13515.99, 15450.82, 4049.13, 13537.96, 2922.60, 12312.55,8398.72, 9678.39]

# 绘制地图
map_1 = Map("安徽省图例-各地市面积",title_pos=‘center‘,width=1200, height=600)
# 地图详细信息
map_1.add("", city, area,maptype=‘安徽‘, is_visualmap=True, visual_range=[min(area), max(area)], visual_text_color=‘black‘, is_map_symbol_show=False, is_label_show=True)

# 输出到当前文件夹下,保存名为 安徽省地图,文件类型为html
map_1.render("安徽省地图.html")

  

看看文件的结果如何:

 

技术分享图片

 

 

 

这个简直很完美好吧,

1.左侧的颜色区间为渐变色,天空蓝——黄——红,表示的数据为由低到高;

2.数据的值并非手动分段,而是自动分段,故不一定是我们想要的;

3.鼠标放在某块地市区域上时,会高亮显示,并且会显示详细信息,这是一个可选项。

4…还是自己挖掘吧。

既然是由开源JS迁过来的,我们就必须要看看其网页源代码。

Woc,这个代码行数和右边的滚动块根本不是我想要的比例好吗!!看来期间那段js函数是一个大工程啊。

 

技术分享图片

 

 

 

从参数option_xxxx可以看出,这些项基本为我们自己定义:如

title是一个字典,text值为我们标题值,这里用的其他编码所表示

left值为我们所设置的 title_pos= ‘center’

top,textStyle,subtextStyle为默认值,我们并未去修改。

 

技术分享图片

 

 

挑一些重要的说:

mapType即为我们所想显示的地图,如我们选的安徽(不要带上省市单位,如想显示合肥市,则填合肥即可)

data是我们所选地市名称和面积数据,所以在Python中我们也可以写成字典形式

 

技术分享图片

 

 

VisualMap基本就是地图显示的详细信息了,

Type有两个值可以选 continuous和piecewise,前者为连续后者为分段

Min,max是数据范围,即Python中visual_range的参数

inRange内参数color即颜色范围,可以选择多项,当然可以用英文表示,如’skyblue’等

splitNumber是分段,自动分为5段,默认值为5

参数众多,以上挑了一些比较重要的。

如果想要编辑这HTML文件,可以使用记事本打开,还有一个比较好用的文档编辑器notepad++(适用于多种文档),sublime text,Dreamweaver等文件。

如果想要了解更详细的参数,访问这里。

官方文档。

(PS:文档是用word编辑,发表于本人公众号的,超链接一律失效,图片水印为公众号名称,支付宝搜索8282704领红包)

以上是关于[python] 几行代码也能玩转世界地图?的主要内容,如果未能解决你的问题,请参考以下文章

重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

安卓手机也能玩转iPhone控制中心,体验极致顺畅快捷!

人穷志不短,穷学生也能玩转树莓派

手把手教程,零基础也能玩转MapReduce

不会sql也能玩转的sql数据分析-上篇

小白也能玩转Kubernetes,你与大神只差这几步