Creu mapiau gyda Geopandas
Y cwpl o wythnosau diwethaf dechreuais i chwarae gyda chreu mapiau yn Python gan ddefnyddio’r llyfrgell Geopandas. Mae’r llyfrgell yn anhygoel ac rydw i wedi dod yn ffan fawr. Mae’r syntax yn debyg iawn i Pandas, ac mae’n gweithio’n grêt gyda matplotlib hefyd. Mewn gwirionedd mae’r naid o ddefnyddio Pandas i Geopandas yn fach iawn, ac os wyt ti’n gyfforddus gyda Pandas, does dim lot o waith o gwbl i ddeall Geopandas.
Fel rhan o fy ngwaith PhD edrychais i mewn i lefelau amddifadedd (deprivation) yn y pum sir a wasanaethwyd gan Fwrdd Iechyd Aneurin Bevan. Ges i lot o help i ddeall LSOAau, polygonau, a sgorau WIMD gan fy mrawd Rob, sydd wedi cynhyrchu mapiau eisoes yn R. Yn y cofnod blog yma, dangosaf enghreifftiau o’r plotiau rydw i wedi cynhyrchu, a’r cod syml defnyddiais i’w cynhyrchu.
Lawrlwytho Data
Yn fy ngwaith canolbwyntiais ar bum sir yn ne ddwyrain Cymru: Blaenau Gwent, Caerffili, Casnewydd, Sir Fynwy, a Tor-faen. Hefyd roedd angen edrych ar ardaloedd mwy manwl, mor fach a oedd posib. Y categori lleiaf ar gyfer ardaloedd yn Gymru yw LSOAau (Local Super Output Area), sef ardaloedd lle mae rhwng 1000 a 1500 o bobl yn byw. Mae gan bob LSOA cod ac enw: er enghraifft yr LSOA sy’n cynnwys Castell Cas-gwent yw “St Mary’s”, a’i chod yw W01001587.
Er mwyn gallu mapio LSOAau, mae angen gwybod siâp a lleoliad pob ardal. Diffinnir y rhain gan polygonau. Gellir lawrlwytho rhain mewn fformat geojson o’r ONS. Dyma linc i’r data defnyddiais i, sy’n cynnwys pob LSOA yn Gymru a Lloegr:
(Nodwch fod hwn yn set ddata enfawr: 34,753 o LSOAau, pob un yn cynnwys pob fertig o’r polygon sy’n ei ddiffinio. Fe fydd hwn yn cymryd amser i lawrlwytho, ac fe fydd yn cymryd amser i agor gan Geopandas. Y peth cyntaf wnes i oedd hidlo a safio ffeil geojson arall gydag ond yr LSOAau o’r pum sir o ddiddordeb.)
Yn ogystal â’r polygonau, fe ddefnyddiais dau set ddata arall, yn cynnwys gwybodaeth ar fesur amddifadedd WIMD pob LSOA (Welsh Index of Multiple Deprivation, graddfa lle mae WIMD o 1 yn dynodi’r LSOA mwyaf difreintiedig, a 1909 yn dynodi’r LSOA lleiaf difreintiedig), a phoblogaeth dros 60 oed pob LSOA. Fe lawrlwythais i rain o StatsWales a’r ONS:
Darllen Geojson
Mae’n hawdd iawn darllen mewn geojson i geopandas:
Mae world
yn wrthrych GeoDataFrame
, sydd yn ymddwyn yn union fel DataFrame
pandas.
Ar ôl defnyddio Pandas i ddarllen y setiau data poblogaeth ac amddifadedd,
cyfunais y tair ffrâm data (gan ddefnyddio Pandas) felly bod gan world
tri
colofn ychwanegol: WIMD
, Over 60
a Sir
:
Plotio Map
Mae plotio map o’r polygonau yn hawdd:
I ddynodi sut i liwio’r polygonau defnyddiwch ddadlau:
- Dynodwch pa golofn i’w ddefnyddio fel gwerthoedd gyda
column
- Dynodwch y map liw i’w ddefnyddio gyda
cmap
Gallwch hefyd integreiddio gydag amgylchedd wrthrych matplotlib:
Trin Geometreg
Mae nifer o ddulliau i drin geometreg y polygonau.
Dull Geopandas o grwpio yw dissolve
, sy’n grwpio polygonau gyda rhinweddau
tebyg a chreu un polygon mawr ohonynt.
Grwpio LSOAau gan sir:
Gallwn ffeindio canolbwynt polygon gyda centroid
:
Un defnydd o ganolbwynt polygon yw i labelu polygonau:
Mae Geopandas hefyd yn dod gyda nifer o ddulliau clyfar i ddelio gyda dafluniadau map gwahanol.
Casgliad
Rydw i wedi joio chwarae gyda Geopandas, a chredaf fod y mapiau a chynhyrchwyd yn brydferth iawn.
Yn olaf, cyfunaf dau fap, LSOAau a siroedd, i edrych ar amddifadedd.
Fan hyn defnyddiaf y GeoDataFrame siroedd
i ychwanegu llinellau du rhwng y
pum sir.
Gallwn weld fod gan Sir Fynwy sgorau amddifadedd mwy na’r siroedd eraill. Wrth gymharu â’r map poblogaeth dros 60 oed, gallwn weld fod gan Sir Fynwy mwy o bobl henach na’r siroedd eraill. Mewn gwirionedd, mae patrwm poblogaeth pobl dros 60 oed a phatrwm amddifadedd yn debyg ofnadwy. A ydym wedi sylwi ar rywbeth diddorol? Yw pobl dros 60 yn fwy tebygol i symud i ardaloedd llai difreintiedig?
Er bod y mapiau yn edrych yn neis, mae’n anodd iawn dweud gyda mapiau fel hyn, gan fod gan wybodaeth geograffeg gymaint o gyd-newidynnau. Yn yr achos yma, mae WIMD wedi’i chyfrifo o nifer o gyd-newidynnau. Un ohonynt yw diweithdra: nid yw pobl ymddeol yn cyfri’n ddi-waith, felly os yw nifer o bobl henach yn bwy mewn ardal, fe fydd diweithdra’r ardal yn disgyn. Mae’n debyg fod nifer o gyd-newidynnau WIMD yn cael ei effeithio gan boblogaeth hen bobl, felly ni allwn dynnu unrhyw gasgliadau fan hyn.
Serch hynny, mae Geopandas yn declyn gwych, yn cynhyrchu mapiau pert iawn, ac yn hawdd i’w ddefnyddio os ydych eisoes yn gyfarwydd gyda Pandas.