V. Pontsorozatok ábrázolása térképen Térképek többek között a maps R csomag map függvényének alkalmazásával készíthetők. A map függvény szintaxisa: map("adatbázis", "régió", projection, orientation, xlim, ylim, fill, col, bg, border, lwd, egyéb grafikus paraméterek) "adatbázis": A térképet tartalmazó adatbázis, amelyet felhasználunk a megjelenítéshez. "régió": Az a terület, amelyet meg szeretnénk jeleníteni, például országok felsorolása (nem szükséges megadni). projection="szöveg": Az alapértelmezett négyzetes hengervetülettől eltérő térképvetület ezzel a paraméterrel adható meg (pl. stereographic, mercator, lambert). orientation=c(szám1,szám2,szám3): Ha az alapértelmezettől eltérő projekciót választottunk, akkor itt adhatjuk meg, hogy az Északi- vagy a Déli-sark felé legyen orientált a térkép: szám1=90 vagy szám1=-90. Melyik hosszúsági kör kerüljön a centrumba: szám2 és mekkora legyen az elforgatás szöge: szám3. Például Északi-sark felé orientált polár-sztereografikus, a 19. hosszúsági kört középen megjelenítő térkép esetén: orientation=c(90,19,0). xlim=c(szám,szám): a megjelenítendő tartományt határoló földrajzi hosszúságok ylim=c(szám,szám): a megjelenítendő tartományt határoló földrajzi szélességek fill=true/false: a kijelölt régió kerüljön-e kitöltésre színnel (alapértelmezetten fehér) col="szín": a kijelölt régió színe bg="szín": a háttér színe (alapértelmezetten fehér) border="szín": az országhatárok színe lwd=szám: az országhatárokat jelölő vonalak típusa (alapértelmezetten 1, folytonos vonal) 1. példa: Jelenítsük meg Magyarországot szürke színnel, é. sz. 45,5 és é. sz. 49, illetve k. h. 15 és k. h. 24 között, valamint jelenítsük meg a szomszédos országok (és Csehország) megadott területre eső részeit világosszürkével! A környező országok neveit az orszagok objektumban tároljuk és adjuk hozzá a Magyarországot tartalmazó térképhez (ehhez az újabb map függvényben az add=true paramétert használjuk). orszagok <- c("slovakia","ukraine","romania","serbia","croatia","slovenia","austria","czech Republic") library(maps) map("world", "Hungary", xlim=c(15,24), ylim=c(45.5,49), fill=true, col="gray50") 1
map("world", orszagok, xlim=c(15,24), ylim=c(45.5,49), fill=true, col="gray90", add=true) Pont és felirat például a points és a text függvénnyel adható az ábrához. A point függvény szintaxisa: points(koordináták, pch, col, egyéb grafikus paraméterek) koordináták: földrajzi hosszúság és szélesség (szögmérték helyett tizedes fok), ha a négyzetes hengervetülettől eltérő projekciót választunk, akkor a mapproj R csomag mapproject függvény alkalmazható beágyazva (lásd alább). pch: a jelölő stílusa (a szimbólum típusa) col: a jelölő színe A text függvény szintaxisa: text(koordináták, labels, col, egyéb grafikus paraméterek) koordináták: lásd a points függvénynél leírtakat labels="szöveg": feliratok col: a felirat színe Például az előző ábrán sárgával jelöljük Budapestet és írjuk fehérrel a jel fölé, hogy Budapest. points(19, 47.5, pch=16, col="yellow") text(19, 47.65, labels="budapest", col="white") Méretarány a map.scale függvénnyel illeszthető a térképre. Alapértelmezetten a bal alsó sarok közelébe kerül. A map.scale függvény szintaxisa: map.scale(x, y, relwidth=0.15, metric=true, ratio=true) x: a méretarány pozíciójának egyik koordinátája (földrajzi hosszúság) y: a méretarány pozíciójának másik koordinátája (földrajzi szélesség) relwidth: a méretarány nagysága, alapértelmezetten az ábra szélességének 15 %-a metric: alapértelmezetten TRUE, vagyis metrikus rendszerben jelenik meg a méret ratio: a scale approx megjelenjen-e vagy sem, alapértelmezetten TRUE Például illesszünk méretarányt az előző ábra jobb alsó sarkába: map.scale(21,46) 2
2. példa: Jelenítsük meg a világtérképet a map függvénnyel! Illesszünk szélességi és hosszúsági köröket a térképre 30 -os beosztással, például az abline függvény segítségével. A 0 szélességi kör legyen piros, a 0 hosszúsági kör pedig kék. map(database="world", col="gray80", fill=true) longs <- seq(-180,180,30) lats <- seq(-90,90,30) abline(h=lats,v=longs) abline(h=0, col="red") abline(v=0, col="blue") Megjegyzés: a world adatbázis használatával a 2016-ban létező országok jeleníthetők meg. (A Natural Earth adatbázis térképeit tartalmazza 1.) A worldhires adatbázis térképei az 1990-es állapotot mutatják. A Magyarországgal szomszédos országok a következőképpen sorolhatók fel: Czechoslovakia, USSR, Romania, Yugoslavia, Austria. Az alapértelmezett vetület a négyzetes hengervetület, vagyis a Föld azonos területű négyzetekre került felosztásra. Áttérhetünk azonban más térképvetületre is. Például polársztereografikus vetület esetén a térképsík a Földet a pólusban érinti, az Egyenlítő felé egyre inkább torzít, ezért magasabb földrajzi szélességeken használandó. A Mercator-féle hengervetület térképsíkja a Földet az Egyenlítőnél érinti és a pólusok felé torzít, így alacsonyabb szélességeken előnyös a használata. A Lambert-féle kúpvetület a Földet egy kijelölt szélességi kör mentén érinti. Kisebb területű országok, például Magyarország esetén alkalmazható. 1 http://www.naturalearthdata.com/downloads/ (ellenőrizve: 2017.11.30-án) 3
Tetszőleges projekció kiválasztásához a mapproj csomag mapproject függvényét használjuk. A mapproject függvény szintaxisa: mapproject(koordináták, projection, orientation) koordináták: földrajzi hosszúság és szélesség prorejction="szöveg": a kiválasztott térképvetület orientation=c(): a kiválasztott térképvetület paraméterei Pont és szöveg négyzetes hengervetülettől eltérő térképre illesztésekor a mapproject függvénnyel állíthatók be a vetület paraméterei. A földrajzi szélességi és hosszúsági körök a mapproj R csomag map.grid függvényével illeszthetők az ábrára. A map.grid függvény szintaxisa: map.grid(nx=szám, ny=szám, col="szín", labels=true, cex=szám) nx=szám: a hosszúsági körök száma ny=szám: a szélességi körök száma col=szöveg: a hosszúsági és a szélességi körök színe labels=true/false: az R automatikusan megjeleníti a hosszúsági és a szélességi kör azonosítóját. (Megjegyzés: A 180. hosszúsági kör feliratának megjelenítése problémát okoz, ugyanis egy helyre pozícionálja a -180 és a +180 értéket.) cex=szám: a feliratok méretének beállítása (alapértelmezett értéke 1) 3. példa: Készítsünk az északi félgömb 15 és 90 szélességi körei közötti területre polársztereografikus térképet úgy, hogy a térkép közepén k. h. 19 fusson keresztül. Jelöljük a térképen három oszcillációs jelenség akciócentrumait (legintenzívebb területeit)! Észak-atlanti Oszcilláció (NAO): pl. Ponta Delgada (é. sz. 38 és ny. h. 26 ), valamint Reykjavík (é. sz. 64 és ny. h. 22 ) jelölje piros négyzet Észak-atlanti Nyugat-oroszországi rendszer (EA/WR): az Északi-tenger (é. sz. 58 és k. h. 5 ), a Kaszpi-tenger (é. sz. 57 és k. h. 60 ), illetve a Távol-Kelet (é. sz. 45 és k. h. 135 ) fölötti akcióközpont jelölje kék kör. Mediterrán Oszcilláció (MO): például Algír (é. sz. 37 és k. h. 3 ), valamint Kairó (é. sz. 30 és k. h. 31 ) jelölje zöld háromszög # Polar-sztereografikus terkep megjelenitese: map("world", projection="stereographic", orientation=c(90,19,0), ylim=c(15,90)) # Akciocentrumok jelolese: 4
# NAO: points(mapproject(-26,38, projection="stereographic", orientation=c(90,19,0)), pch=15, col="red") points(mapproject(-22,64, projection="stereographic", orientation=c(90,19,0)), pch=15, col="red") # EA/WR: points(mapproject(5,58, projection="stereographic", orientation=c(90,19,0)), pch=16, col="blue") points(mapproject(60,57,projection="stereographic", orientation=c(90,19,0)), pch=16, col="blue") points(mapproject(135,45,projection="stereographic", orientation=c(90,19,0)), pch=16, col="blue") # MO: points(mapproject(3,37, projection="stereographic", orientation=c(90,19,0)), pch=17, col="green") points(mapproject(31,30, projection="stereographic", orientation=c(90,19,0)), pch=17, col="green") # Foldrajzi szelessegi es hosszusagi korok illesztese: map.grid(nx=4, ny=4, col="gray50", labels=false) # Foldrajzi korok azonositoinak illesztese: text(mapproject(-55,15, projection="stereographic", orientation=c(90,19,0)), labels=15) text(mapproject(-55,40, projection="stereographic", orientation=c(90,19,0)), labels=40) text(mapproject(-55,60, projection="stereographic", orientation=c(90,19,0)), labels=60) text(mapproject(-54,88, projection="stereographic", orientation=c(90,19,0)), labels=84) text(mapproject(0,12, projection="stereographic", orientation=c(90,19,0)), labels=0) text(mapproject(-100,11, projection="stereographic", orientation=c(90,19,0)), labels=-100) text(mapproject(102,12, projection="stereographic", orientation=c(90,19,0)),labels=100) text(mapproject(178,13, projection="stereographic", orientation=c(90,19,0)),labels=180) 5
# Jelmagyarazat abrara illesztese: legend("bottomright", legend=c("nao","ea/wr","mo"), col=c("red","blue","green"), pch=c(15,16,17)) Ha több akciócentrum fordulna elő, akkor előbbi utasítássorozat áttekinthetetlenné válna. Nincs szükség for ciklusra ahhoz, hogy kevesebb és áttekinthetőbb utasítással hozzuk létre az előbbi ábrát. Ehhez gyűjtsük numerikus vektorba földrajzi hosszúságokat és szélességeket! Az akciócentrumok esetén: lon <- c(-26,-22,5,60,135,3,31) lat <- c(38,64,58,57,45,37,30) A térképre illesztett földrajzi körök pozíciója és értékei: lon2 <- c(-55,-55,-55,-54,0,-100, 102,178) lat2 <- c(15,40,60,88,12,11,12,13) fok <- c(15,40,60,84,0,-100,100,180) Gyűjtsük numerikus vektorba a jelölők sorszámait és hozzunk létre karakterlánc vektort a színekből! jel <- c(15,15,16,16,16,17,17) szin <- c("red","red",rep("blue",3),"green","green") Az ábrát mentsük 12 inch széles és 9 inch magas, pdf formátumú állományba! Az alapértelmezett betűméret legyen 16 pt! 6
Az ábrát létrehozó script: pdf(file="akciokozpontok.pdf", width=12, height=9, pointsize=16) map("world", projection="stereographic", orientation=c(90,19,0), ylim=c(15,90)) points(mapproject(lon, lat, projection="stereographic", orientation=c(90,19,0)), pch=jel, col=szin) map.grid(nx=4, ny=4, col="gray50", labels=false) legend("bottomright", legend=c("nao","ea/wr","mo"), col=c("red","blue","green"), pch=c(15,16,17)) text(mapproject(lon2,lat2, projection="stereographic", orientation=c(90,19,0)), labels=fok) graphics.off() 7
FELHASZNÁLT IRODALOM ÉS CSOMAGOK: R Core Team (2017). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.r-project.org/. A https://www.rdocumentation.org/ oldalon elérhető leírások a függvények paramétereiről. Original S code by Richard A. Becker, Allan R. Wilks. R version by Ray Brownrigg. Enhancements by Thomas P Minka and Alex Deckmyn. (2017). maps: Draw Geographical Maps. R package version 3.2.0. https://cran.r-project.org/package=maps 8