日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python如何使用bokeh包和geojson數(shù)據(jù)繪制地圖

瀏覽:41日期:2022-08-01 16:52:30

最近要繪制倫敦區(qū)地圖,查閱了很多資料后最終選擇使用bokeh包以及倫敦區(qū)的geojson數(shù)據(jù)繪制。bokeh是基于python的繪圖工具,可以繪制各種類型的圖表,支持geojson數(shù)據(jù)的讀取及繪制地圖。

安裝bokeh

$ pip install bokeh

軟件版本

python-3.7.7bokeh-2.0.0

數(shù)據(jù)來源

倫敦地圖數(shù)據(jù)來源于Highmaps地圖數(shù)據(jù)集。下載的是英國(guó)的地圖數(shù)據(jù)united-kindom.geo.json。需要對(duì)得到的數(shù)據(jù)進(jìn)行預(yù)處理才能得到只含倫敦地區(qū)的數(shù)據(jù)。這需要對(duì)geojson數(shù)據(jù)的格式有一定的了解。在對(duì)數(shù)據(jù)進(jìn)行處理之前,先看如何繪制英國(guó)地圖。

繪制英國(guó)地圖

from bokeh.plotting import curdoc, figurefrom bokeh.models import GeoJSONDataSource# 讀入英國(guó)地圖數(shù)據(jù)并傳給GeoJSONDataSourcewith open('united-kindom.geo.json', encoding='utf8') as f: geo_source = GeoJSONDataSource(geojson=f.read())# 設(shè)置一張畫布p = figure(width=500, height=500)# 使用patches函數(shù)以及geo_source繪制地圖p.patches(xs=’xs’, ys=’ys’, source=geo_source)curdoc().add_root(p)

上述代碼可以繪制出英國(guó)地圖。將上述代碼保存為test.py,在終端運(yùn)行

$ bokeh serve --show test.py

這會(huì)自動(dòng)打開瀏覽器,并顯示英國(guó)地圖。運(yùn)行結(jié)果如圖:

Python如何使用bokeh包和geojson數(shù)據(jù)繪制地圖

獲取倫敦地區(qū)數(shù)據(jù)

獲取倫敦地區(qū)數(shù)據(jù)可以手動(dòng)從united-kingdom.geo.json文件中篩選出倫敦的數(shù)據(jù),也可以先用python先把數(shù)據(jù)過濾一遍,然后將數(shù)據(jù)傳給bokeh。這需要對(duì)geojson文件格式有一定的了解,在此不詳細(xì)介紹。

from bokeh.plotting import curdoc, figurefrom bokeh.models import GeoJSONDataSourceimport json# 用json庫(kù)讀取數(shù)據(jù)with open('united-kindom.geo.json', encoding='utf8') as f: data = json.loads(f.read())# 判斷是不是倫敦地區(qū)數(shù)據(jù)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# 過濾數(shù)據(jù)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)

運(yùn)行結(jié)果如圖:

Python如何使用bokeh包和geojson數(shù)據(jù)繪制地圖

美化

上面的倫敦地圖只是一個(gè)大概的輪廓,下面對(duì)地圖添加一系列功能。

添加各區(qū)輪廓線

p.patches(xs=’xs’, ys=’ys’, fill_alpha=0.7, # 畫輪廓線 line_color=’white’, # 線的顏色 line_width=0.5, # 線的寬度 source=geo_source)

現(xiàn)在地圖區(qū)域輪廓很清晰。

添加顏色

# 為每一個(gè)地區(qū)增加一個(gè)color屬性for i in range(len(data[’features’])): data[’features’][i][’properties’][’color’] = [’blue’, ’red’, ’yellow’, ’orange’, ’gray’, ’purple’][i % 6]p.patches(xs=’xs’, ys=’ys’, fill_alpha=0.7, line_color=’white’, line_width=0.5, color='color', # 增加顏色屬性,這里的'color'對(duì)應(yīng)每個(gè)地區(qū)的color屬性 source=geo_source)

現(xiàn)在地圖五顏六色。

增加圖注

import random# 隨機(jī)產(chǎn)生數(shù)據(jù)用于展示for i in range(len(data[’features’])): data[’features’][i][’properties’][’number’] = random.randint(0, 20_000)p = figure(width=500, height=500, tooltips='@name, number: @number' # 使用tooltips生成圖注,@+屬性名稱,這里的name是數(shù)據(jù)中原本有的,number是新近添加的。 )

現(xiàn)在鼠標(biāo)放到區(qū)域上時(shí),會(huì)顯示'區(qū)域名, number: 數(shù)字'。

去掉坐標(biāo)軸與背景線

p.axis.axis_label = Nonep.axis.visible = Falsep.grid.grid_line_color = None

最終代碼

from bokeh.plotting import curdoc, figurefrom bokeh.models import GeoJSONDataSourceimport jsonimport randomwith 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 Falsedata[’features’] = list(filter(isInLondon, data[’features’]))for i in range(len(data[’features’])): data[’features’][i][’properties’][’color’] = [’blue’, ’red’, ’yellow’, ’orange’, ’gray’, ’purple’][i % 6] data[’features’][i][’properties’][’number’] = random.randint(0, 20_000)geo_source = GeoJSONDataSource(geojson=json.dumps(data))p = figure(width=500, height=500, tooltips='@name, number: @number')p.patches(xs=’xs’, ys=’ys’, fill_alpha=0.7, line_color=’white’, line_width=0.5, color='color', source=geo_source)p.axis.axis_label = Nonep.axis.visible = Falsep.grid.grid_line_color = Nonecurdoc().add_root(p)

倫敦地圖完成了

Python如何使用bokeh包和geojson數(shù)據(jù)繪制地圖

總結(jié)

最開始想用pyecharts做的,但是pyecharts并沒有倫敦的地圖。折騰半天,最后只好自己找geojson數(shù)據(jù)來畫地圖。

找到了很多關(guān)于地圖的數(shù)據(jù)和工具,比如上文中提到的highmap數(shù)據(jù)集,以及DataV.altas,這個(gè)工具可以可視化地提取中國(guó)區(qū)域的地圖數(shù)據(jù),但感覺比起自己找數(shù)據(jù),畫中國(guó)地圖還是pyecharts來得實(shí)在。

數(shù)據(jù)最重要。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
re久久精品视频| 国产精品婷婷| 日韩不卡一区| 国产成人精品一区二区三区视频 | 97久久精品| 日韩精品一区二区三区中文| 国产欧美日韩免费观看| 精品一区二区三区视频在线播放| 一区二区三区午夜视频| 国产成人精品福利| 91精品美女| 久久精品国产网站| 国产精品chinese| 伊人久久视频| 香蕉久久夜色精品国产| 亚洲在线电影| 日韩精品一区第一页| 日韩免费高清| 国产专区一区| 欧美福利一区| 亚洲一二三区视频| 日本午夜精品久久久久| 老司机精品在线| 日韩精品91| 亚洲女人av| 国产乱码精品一区二区三区亚洲人| 精品淫伦v久久水蜜桃| 999久久久亚洲| 日韩一区精品视频| 国产精品jk白丝蜜臀av小说| 91精品xxx在线观看| 亚洲欧美日本国产专区一区| 热久久久久久| 精品丝袜在线| 丝袜国产日韩另类美女| 欧美另类中文字幕 | 免费精品视频最新在线| 日韩精品一页| 国产不卡精品在线| 亚洲综合国产| 麻豆国产一区| 在线日韩电影| 日本91福利区| 樱桃视频成人在线观看| 欧美在线综合| 精品免费在线| 日韩中文字幕1| 精品三区视频| 免费精品视频在线| 久久一区国产| 午夜在线精品| 91欧美国产| 亚洲精品婷婷| 日韩免费福利视频| 日韩成人av影视| 在线视频观看日韩| 国产欧美91| 日韩视频精品在线观看| 国产精品videossex久久发布 | 亚洲高清影视| 国产高清日韩| 在线午夜精品| 国内精品美女在线观看| 亚洲午夜国产成人| 一区二区精品伦理...| 日韩一区二区三区在线看| 日韩欧美看国产| 69堂精品视频在线播放| 91精品电影| 精品久久久网| 日韩高清一区| 久久亚洲专区| 国产成人免费| 国产精品一在线观看| 亚洲国产成人精品女人| 国产理论在线| 国产日产精品_国产精品毛片| 女主播福利一区| 国产精品magnet| 亚洲精品第一| 国产毛片久久| 激情偷拍久久| 久久久男人天堂| 欧美激情麻豆| 日韩久久一区| 免费日韩av| 久久久久久久久久久妇女| 精品免费av| 国产精品任我爽爆在线播放| 亚洲精品九九| 国产精品婷婷| 亚洲激情五月| 日韩精品一区二区三区免费观看| 精品一区二区三区中文字幕| 日韩av影院| 四虎精品一区二区免费| 亚洲欧美日韩专区| 国产综合亚洲精品一区二| 中文在线中文资源| 岛国av免费在线观看| 国产乱人伦丫前精品视频 | 蜜桃精品在线| 色爱综合网欧美| 国语精品一区| 精品国产亚洲一区二区三区在线| 久久国产麻豆精品| 日韩精品一区二区三区中文在线| 中文一区一区三区免费在线观| 激情综合网站| 亚洲手机在线| 久久久久久久久久久9不雅视频| 电影天堂国产精品| 欧洲一级精品| 欧美黄色网页| 久久国产毛片| 欧美亚洲精品在线| 亚洲精品在线观看91| 欧美日韩一二| 亚洲男女av一区二区| 亚洲天堂久久| 99国产精品私拍| 日韩一区欧美二区| 日韩一区免费| 国产精品一级在线观看| 国产精品久久久久久久久久白浆| 国产欧美日韩免费观看| 欧美激情91| 国产va在线视频| 岛国av免费在线观看| 亚洲成人一区在线观看| 欧美高清不卡| 国产一区二区精品| 亚洲色图综合| 国产情侣久久| 国产一区二区三区不卡av| 国产一区二区三区四区五区传媒| 六月婷婷综合| 91成人精品视频| 日韩午夜视频在线| 欧美激情五月| 久久久久国产精品一区二区| 在线午夜精品| 7777精品| 国产精品v日韩精品v欧美精品网站| 国产一区一一区高清不卡| 日韩毛片视频| 欧美专区在线| 欧美日韩视频免费看| 成人在线丰满少妇av| 999久久久国产精品| 石原莉奈在线亚洲三区| 国产日韩一区二区三区在线| 国产在线视频欧美一区| 亚洲高清毛片| 青青草国产成人99久久| 成人午夜亚洲| 亚洲美洲欧洲综合国产一区| 日韩三级久久| 精品久久美女| 激情婷婷欧美| 日本在线一区二区三区| 精品女同一区二区三区在线观看| 日韩精品久久理论片| 日韩在线观看一区| 日韩精品导航| 夜夜嗨网站十八久久| 国内自拍视频一区二区三区| 综合国产视频| 亚洲视频二区| 日韩一区精品字幕| 成人日韩在线观看| 最近高清中文在线字幕在线观看1| 蜜臀av亚洲一区中文字幕| 麻豆一区二区三| 亚洲一区二区三区无吗| 免播放器亚洲| 激情五月色综合国产精品| 午夜久久美女| 日韩精品亚洲专区| 狠狠色狠狠色综合日日tαg| 91精品国产自产精品男人的天堂 | 午夜av成人| 久久久久午夜电影| 日本va欧美va欧美va精品| 欧美日韩精品一区二区三区在线观看| 黄色在线网站噜噜噜| 蜜桃久久久久久| 91欧美在线| 日韩av资源网| 欧美日韩视频一区二区三区| 久久超碰99| 中文字幕乱码亚洲无线精品一区| 精品欧美视频| 亚洲毛片视频| 久久久影院免费| 国产精品嫩模av在线| 亚洲黄色影院| 日韩精品电影| 欧美a在线观看| 男人天堂欧美日韩|