A ggplot2 csomagot természetesen nem az efféle, pusztán a szórakozást szolgáló diagramok készítésére találták ki. De erre is jó. Merthogy itt technikailag egy diagramról van szó, amelynek létrehozása semmiben sem különbözik attól, mint ha egy tudományos munkákban megszokott ábrát készítenénk. Éppen ezért – a látszat ellenére – nem haszontalan dolog egy karácsonyfát imitáló diagram elkészítésére némi időt szánni, hiszen ezzel is gyakorolni lehet a ggplot2 használatát.
Hasonló dolgokkal egyébként már korábban is próbálkoztam. A furcsa diagramok sorozat keretei között tavaly decemberben ugyancsak egy karácsonyfát, idén júniusban pedig egy könyvespolcot készítettem. Lássuk tehát a karácsonyfa 2021-es verzióját!
Az alábbiakban R nyelven (v4.1.2) írt kódot használok a feladat végrehajtásához. A magyarázó szövegek közé ékelt fekete kódblokkok tartalmát az RStudio-ban egymás alá illesztve elvileg bárki által reprodukálható az itt bemutatott műveletsor. A kódblokkok # kezdetű sorai pusztán magyarázó funkcióval bírnak, ezekre a program futtatásakor nincs szükség.
Az ábra létrehozásakor az alábbi két csomagot használom:
-
A
ggplot2
segítségével hozzuk létre magát a diagramot. -
Az
extrafont
csomaggal a számítógépünkre feltelepített betűtípusok összességéből kiválaszthatjuk azt, amelyikkel feliratozni akarjuk a diagramunkat. (A ggplot2 alapértelmezés szerint egy minimalista sans-serif betűtípust használ.) Első használatkor afont_import()
paranccsal kell indítani, aminek végrehajtása hosszú percekig is eltarthat. A későbbiekben azonban már csak aloadfonts(device = "win")
parancsra van szükség a használatához.
Töltsük be ezeket a csomagokat és hozzunk létre egy munkakönyvtárat. Utóbbiba fog elmentődni a kész ábra.
|
|
Ha a betűtípusok importálása közben a No FontName. Skipping. hibaüzenetet látjuk, akkor a Stack Overflow ide belinkelt posztjában találunk segítséget.
Egy ggplot2-vel készült ábra felépítését annak analógiájára lehet elképzelni, mintha átlátszó fóliákra rajzolnánk vagy írnánk, majd ezeket a fóliákat egymásra rétegeznénk. Jelen esetben az annotate()
függvénnyel három szöveges rétegből építjük fel a diagramot. Ennek első paramétere a “text” karakterlánc, a továbbiak pedig az alábbi táblában felsorolva szerepelnek.
Paraméter | Magyarázat |
---|---|
x | a szöveg elhelyezkedésének x koordinátája (numerikus érték) |
y | a szöveg elhelyezkedésének y koordinátája (numerikus érték) |
label | maga a szöveg (karakterlánc) |
family | a szöveg betűtípusa (karakterlánc) |
size | a szöveg mérete (numerikus érték) |
color | a szöveg színe (karakterlánc) |
A family paraméternek csak akkor van hatása, ha az extrafont csomagot betöltöttük. Én a Script MT Bold és Arial Nova Light betűtípusokat használtam az ábra elkészítéséhez. Amennyiben ezek nem lennének feltelepítve a számítógépére, akkor értelemszerűen nem úgy jelenne meg az ábra, ahogy az alábbiakban látjuk.
Maga az algoritmus rövid és nem túl bonyolult. A további megjegyzéseket már közvetlenül a kódblokkba írom bele.
|
|
Ezek után nincs más hátra, minthogy kellemes ünnepeket kívánjak A programozó történész blog olvasóinak! 😍