最近要绘制伦敦区地图,查阅了很多资料后最终选择使用bokeh包以及伦敦区的geojson数据绘制。

bokeh是基于python的绘图工具,可以绘制各种类型的图表,支持geojson数据的读取及绘制地图。

安装bokeh

$ pip install bokeh

软件版本

python-3.7.7bokeh-2.0.0

数据来源

伦敦地图数据来源于Highmaps地图数据集。下载的是英国的地图数据united-kindom.geo.json。需要对得到的数据进行预处理才能得到只含伦敦地区的数据。这需要对geojson数据的格式有一定的了解。在对数据进行处理之前,先看如何绘制英国地图。

绘制英国地图

from bokeh.plotting import curdoc, figure

from bokeh.models import GeoJSONDataSource

# 读入英国地图数据并传给GeoJSONDataSource

with open("united-kindom.geo.json", encoding="utf8") as f:

geo_source = GeoJSONDataSource(geojson=f.read())

# 设置一张画布

p = figure(width=500, height=500)

# 使用patches函数以及geo_source绘制地图

p.patches(xs='xs', ys='ys', source=geo_source)

curdoc().add_root(p)

上述代码可以绘制出英国地图。将上述代码保存为test.py,在终端运行

$ bokeh serve --show test.py

这会自动打开浏览器,并显示英国地图。

运行结果如图:

获取伦敦地区数据

获取伦敦地区数据可以手动从united-kingdom.geo.json文件中筛选出伦敦的数据,也可以先用python先把数据过滤一遍,然后将数据传给bokeh。这需要对geojson文件格式有一定的了解,在此不详细介绍。

from bokeh.plotting import curdoc, figure

from bokeh.models import GeoJSONDataSource

import json

# 用json库读取数据

with open("united-kindom.geo.json", encoding="utf8") as f:

data = json.loads(f.read())

# 判断是不是伦敦地区数据

def isInLondon(district):

if 'type' in district['properties'] and 'london borough' in district['properties']['type'].lower():

return True

if 'type-en' in district['properties'] and 'london borough' in district['properties']['type'].lower():

return True

if 'woe-name' in district['properties'] and 'city of london' in district['properties']['woe-name'].lower():

return True

return False

# 过滤数据

data['features'] = list(filter(isInLondon, data['features']))

#

geo_source = GeoJSONDataSource(geojson=json.dumps(data))

p = figure(width=500, height=500)

p.patches(xs='xs', ys='ys', source=geo_source)

curdoc().add_root(p)

运行结果如图:

美化

上面的伦敦地图只是一个大概的轮廓,下面对地图添加一系列功能。

添加各区轮廓线

p.patches(xs='xs', ys='ys', fill_alpha=0.7, # 画轮廓线

line_color='white', # 线的颜色

line_width=0.5, # 线的宽度

source=geo_source)

python怎么安装bokeh_Python如何使用bokeh包和geojson数据绘制地图相关推荐

  1. python怎么安装bokeh_python怎么安装bokeh

    Bokeh (Bokeh.js) 是一个Python交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能.Bokeh 的目标是使用 D3.js 样式提供优雅,简洁新颖的图形化风格,同时提 ...

  2. Python读取EXCEL省份数据绘制地图

    文章目录 EXCEL数据表 读取 Excel 数据并绘图 EXCEL数据表 python操作excel主要用到 xlrd 和 xlwt 这两个库,即读写excel. 安装xlrd:在cmd窗口 pip ...

  3. python可视化操作(二)爬取湖北省统计局数据绘制excel表格

    在这里写了一个比较简单的爬虫,爬取了湖北省统计局关于居民消费价格指数的一些简单信息,然后绘制成excel表格输出.一来是为了复习一下爬虫的简单知识,一是为了熟悉一下python操作excel的技术. ...

  4. Python爬虫之Selenium爬取途牛全国的酒店数据进行地图可视化

    因为找不太到途牛的url规律,就只能慢慢爬取数据,由于页面加载的时间很慢,用一台电脑爬取4000+数据可能需要数小时,这里只是简单实现了每个城市的第一页数据,可以在这个基础上实现多个页面一起爬和强化翻 ...

  5. Python:安装dlib库

    目录: 前言 问题描述 前言 本来安装各种库的方法,我已经写了好几种,甚至于也装上了anaconda 这种神器,但今天还是遇到了一个神奇的问题,因此,特地搜索学习了一下,在此感谢两位博主吧: pyth ...

  6. python怎么安装bokeh_安装Bokeh | 交互式数据可视化库Bokeh的安装

    今天这部分主要给出更多关于Bokeh安装过程的细节. 依赖 Bokeh仅由CPython2.7和3.5+版本官方支持,其他Python版本可能以有限的功能运行(python是一种编程语言,使用c语言开 ...

  7. python怎么安装pandas模块-如何在Python 3中安装pandas包和使用数据结构

    介绍 Python pandas包用于数据操作和分析,旨在让您以更直观的方式处理标记或关系数据. 基于numpy软件包构建,pandas包括标签,描述性索引,在处理常见数据格式和丢失数据方面特别强大. ...

  8. python包安装_Python及图像处理相关包安装

    Python是一种面向对象的解释型计算机程序设计语言,其使用具有跨平台的特点,可以在Linux.macOS以及Windows系统中搭建环境并使用. Anaconda可以便捷获取包且对包能够进行管理,同 ...

  9. 如何检查python是否安装了pip_如何检测和删除通过pip安装的Python包?

    问题描述 我使用pip而不是apt-get意外地将Python软件包安装到我的系统中.我这样做有两种方式: 使用较旧版本的virtualenv,我忘记在创建virtualenv时附加--no-site ...

最新文章

  1. C语言实现bmp图像几何变换(移动,旋转,镜像,转置,缩放)
  2. 两个函数式解决大数相加的方法
  3. python3-正则表达式基本使用方法(附案例)_python正则表达式
  4. MATLAB-M文件
  5. hdu 4362(单调队列优化dp)
  6. .Net Core开发日志——Peachpie
  7. [css] word-wrap、word-break和white-space有什么区别?
  8. gitlab服务器代码存储位置,gitlab 数据目录迁移
  9. [转载] application/json 四种常见的 POST 提交数据方式
  10. Python3 encode中的unicode-escape和raw_unicode_escape
  11. ubuntu 安装搜狗拼音输入法
  12. nginx Access日志格式
  13. Windows_01_Windows系统的中的32位和64位(System32和SysWOW64)
  14. 卡农c语言编程,c调卡农钢琴曲谱_卡农C大调钢琴谱(五线谱)
  15. 办公室文秘试题 计算机,办公室文秘实用计算机操作技巧
  16. 在线阅读Linux内核源代码
  17. 提高网站排名的5大因素
  18. 【机器学习】Unsupervised feature selection by regularized self-representation(RSR)
  19. python技术开发工程师证书查询_高级工程师证书查询系统
  20. 局域网助手_合同助手新增功能介绍

热门文章

  1. git命令出现fatal: Unable to create ‘xxx/.git/index:File exists
  2. 树状数组两种基本的模式
  3. 安装Ubuntu 16.04后要做的事
  4. python用可变参数求积_流畅的python读书笔记-第八章-对象引用、可变性和垃圾回收...
  5. jtag和swd区别,该用哪个?
  6. Redmi AC2100通过ssh安装Breed
  7. 使用腾讯云搭建一个专属自己的网络笔记本(Leanote)
  8. eNSP-配置路由器console接口密码与vty接口密码以及ftp服务
  9. 小程序踩坑日志(一)
  10. 去哪儿网抢票成功率怎么样?