版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第如何利用Python快速繪制海報級別地圖詳解基于Python中諸如matplotlib等功能豐富、自由度極高的繪圖庫,我們可以完成各種極富藝術感的可視化作品,關于這一點我在系列文章在模仿中精進數(shù)據(jù)可視化中已經(jīng)帶大家學習過很多案例了。
而今天我要給大家介紹的這個Python庫prettymaps非常的有趣,基于它,我們只需要簡單的代碼就可以對地球上給定坐標和范圍的任意地區(qū)進行地圖可視化。
2利用prettymaps快速制作海報級地圖
遺憾的是,prettymaps暫時還不能通過pip或conda直接進行安裝,但可以利用pip配合git從源碼倉庫進行安裝,對于國內(nèi)的用戶來說,可以使用下面的語句從github的鏡像地址快速安裝:
pipinstallgit+/marceloprates/prettymaps.git
安裝完成后,如果下面的語句執(zhí)行無誤,那么恭喜你已經(jīng)安裝完成:
fromprettymapsimport*
2.1prettymaps的幾種使用方式
prettymaps無需用戶自行準備數(shù)據(jù),會根據(jù)用戶設定的坐標和范圍大小來自動從OpenStreetMap上獲取相應范圍內(nèi)的矢量數(shù)據(jù)作為繪圖素材,主要有以下幾種使用方式:
2.1.1圓形模式
prettymaps中最簡單的繪圖模式為圓形模式,我們只需要傳入中心點經(jīng)緯度坐標,以及半徑范圍(單位:米)即可,下面的例子來自官方示例程序,我將其地點換成以上海外灘為中心向外2500米范圍:
fromprettymapsimport*
frommatplotlibimportpyplotasplt
#創(chuàng)建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)
layers=plot(
(31.23346,121.492154),#圓心坐標,格式:(緯度,經(jīng)度)
radius=2500,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可
'streets':{
'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',
'width':{
'motorway':5,
'trunk':5,
'primary':4.5,
'secondary':4,
'tertiary':3.5,
'residential':3,
'service':2,
'unclassified':2,
'pedestrian':2,
'footway':1,
'building':{'tags':{'building':True,'landuse':'construction'},'union':False},
'water':{'tags':{'natural':['water','bay']}},
'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'}},
'forest':{'tags':{'landuse':'forest'}},
'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'}}
#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可
drawing_kwargs={
'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},
'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},
'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},
'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},
'water':{'fc':'#a1e3ff','ec':'#2F3737','hatch':'ooo...','hatch_c':'#85c9e6','lw':1,'zorder':2},
'parking':{'fc':'#F2F4CB','ec':'#2F3737','lw':1,'zorder':3},
'streets':{'fc':'#2F3737','ec':'#475657','alpha':1,'lw':0,'zorder':3},
'building':{'palette':['#FFC857','#E9724C','#C5283D'],'ec':'#2F3737','lw':.5,'zorder':4},
osm_credit={'color':'#2F3737'}
#導出圖片文件
plt.savefig('上海外灘-圓形模式.png',dpi=500)
2.1.2圓角矩形模式
除了上述的圓形模式之外,prettymaps中還可以使用圓角矩形模式,同樣需要定義中心點坐標和半徑,接著為參數(shù)layers下的每個鍵值對添加鍵值對{'circle':False,'dilate':圓角半徑}即可,其中圓角半徑為數(shù)值型,這次我們換一個地方,以故宮為例,半徑選擇600米:
#創(chuàng)建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)
dilate=100
layers=plot(
(39.91645697864148,116.39077532493388),#圓心坐標,格式:(緯度,經(jīng)度)
radius=600,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{'circle':False,'dilate':dilate},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可
'streets':{
'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',
'width':{
'motorway':5,
'trunk':5,
'primary':4.5,
'secondary':4,
'tertiary':3.5,
'residential':3,
'service':2,
'unclassified':2,
'pedestrian':2,
'footway':1,
'circle':False,'dilate':dilate
'building':{'tags':{'building':True,'landuse':'construction'},'union':False,'circle':False,'dilate':dilate},
'water':{'tags':{'natural':['water','bay']},'circle':False,'dilate':dilate},
'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'},'circle':False,'dilate':dilate},
'forest':{'tags':{'landuse':'forest'},'circle':False,'dilate':dilate},
'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'},'circle':False,'dilate':dilate}
#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可
drawing_kwargs={
'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},
'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},
'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},
'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},
'water':{'fc':'#a1e3ff','ec':'#2F3737','hatch':'ooo...','hatch_c':'#85c9e6','lw':1,'zorder':2},
'parking':{'fc':'#F2F4CB','ec':'#2F3737','lw':1,'zorder':3},
'streets':{'fc':'#2F3737','ec':'#475657','alpha':1,'lw':0,'zorder':3},
'building':{'palette':['#FFC857','#E9724C','#C5283D'],'ec':'#2F3737','lw':.5,'zorder':4},
osm_credit={'color':'#2F3737'}
#導出圖片文件
plt.savefig('北京故宮-圓角矩形模式.png',dpi=500)
2.1.3添加文字內(nèi)容
有了這樣美觀大方的藝術地圖,我們還可以基于matplotlib中自定義字體的方法,在地圖上添加標注信息,仍然以上海外灘為例,我們利用外部的書法字體,在正中心繪制文字標注信息:
importmatplotlib.font_managerasfm
#創(chuàng)建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)
layers=plot(
(31.23346,121.492154),#圓心坐標,格式:(緯度,經(jīng)度)
radius=2500,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可
'streets':{
'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',
'width':{
'motorway':5,
'trunk':5,
'primary':4.5,
'secondary':4,
'tertiary':3.5,
'residential':3,
'service':2,
'unclassified':2,
'pedestrian':2,
'footway':1,
'building':{'tags':{'building':True,'landuse':'construction'},'union':False},
'water':{'tags':{'natural':['water','bay']}},
'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'}},
'forest':{'tags':{'landuse':'forest'}},
'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'}}
#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可
drawing_kwargs={
'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},
'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},
'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},
'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},
'water'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版2025-2026學年語文四年級第一學期期末質(zhì)量檢測練習卷(含答案)
- 湖南省岳陽市汨羅市2025-2026學年八年級上學期1月期末生物試題(無答案)
- 河南省駐馬店市泌陽縣2025-2026學年八年級上學期1月期末考試歷史試卷答案
- 2025-2026學年一年級(上)期末游戲化測試語文試卷(附參考答案)
- 五年級題目及答案
- 文件筐測試題及答案
- 2026年小學語文模擬沖刺押題卷
- 誠實做事的演講稿
- 冀教版三年級上冊數(shù)學第二單元-兩、三位數(shù)乘一位數(shù)-測試卷及答案(奪冠系列)
- 高中高二下學期地理期末考試試題答案解析
- 蘇教版高中化學必修二知識點
- 2024年國家公務員考試國考中國人民銀行結(jié)構化面試真題試題試卷及答案解析
- 2025年中考語文一輪復習:民俗類散文閱讀 講義(含練習題及答案)
- 高中數(shù)學選擇性必修一課件第一章 空間向量與立體幾何章末復習(人教A版)
- 標準商品房買賣合同文本大全
- LY/T 3408-2024林下經(jīng)濟術語
- 2025年湖南邵陽市新邵縣經(jīng)濟開發(fā)區(qū)建設有限公司招聘筆試參考題庫附帶答案詳解
- 2023-2024學年八年級(上)期末數(shù)學試卷
- DB33T 1238-2021 智慧燈桿技術標準
- ICH《M10:生物分析方法驗證及樣品分析》
- 福建省泉州市晉江市2023-2024學年八年級上學期期末考試數(shù)學試卷(含解析)
評論
0/150
提交評論