
Grid grafika
Knihovna grid obsahuje nástroje pro grid grafiku, která používá funkce nízkého stupně pro vytvoření grafů zpětně editovatelných i po vykreslení.
> library(grid)

> grid.show.viewport(vp)

Ve stromu viewportů můžeme navigovat pomocí funkcí:
downViewport(name, strict = FALSE, recording = TRUE) # jdi do dceřiného viewport (o úroveň níže)
upViewport(n, recording = TRUE) # zaktivuj rodičovský viewport (o n úrovní výše, n=1 defaultně)
seekViewport(name, recording = TRUE) # zaktivuj viewport kdekoliv ve stromě (zavolání jménem)
current.viewport() # zobraz aktuální viewport
current.vpTree() # zobraz celý strom
- Vždy je aktivní pouze jediný viewport, který je aktuální pozicí ve stromu
- Všechno kreslení a operace s viewportem jsou provedeny relativně k aktivnímu viewportu
- Právě vytvořený viewport se stává aktivním viewportem
- Pokud je viewport zrušen, stává se aktivním viewport rodičovský
- Pokud má právě vytvořen viewport stejný název jako jiný na stejné úrovni, tak přepisuje ten již existující ve stromě
grid.lines()
grid.polygon()
grid.circle()
grid.text()
Každá funkce grid.* má ekvivalentní funkci *Grob, která vrací grafický objekt, ale nevykresluje ho:
grid.rect() ... rectGrob()
grid.lines() ... linesGrob()
grid.polygon() ... polygonGrob()
grid.circle() ... circleGrob()
grid.text() ... textGrob()
Použití je následovné. Nejdříve definujeme pomocí funkce rectGrob() čtverec:
> rect <- rectGrob()
Pak jej s pomocí grid.draw() funkce vykreslíme:
> grid.draw(rect)
Nebo alternativně čtverec vykreslíme rovnou s pomocí grid.rect():
> grid.rect()
Můžeme měnit velikost a pozici grafického výstupu vzhledem k velkému počtu systémových koordinát:
> grid.rect(x = unit (0, "native"), y = unit (1.5, "npc"), height = unit (0.5, "inches"), width = unit (0.8, "lines"))
Můžeme také specifikovat různé grafické parametry pomocí funkce gpar() - je to grid alternativa k par()tradičního grafického systému:
> grid.rect(gp = gpar (col = "red", LWD = 2, fill = "yellow", lty = "dotted"))
> grid.text(label = "TEXT", gp = gpar (col = "red", fontsize = 10, fontface = "italic"))
Všechny tyto grafické objekty se nám vykreslili do grafického okna tradičního systému, které vždy představuje kořenový viewport (root).
Nakreslíme si teď obdélník se 45° otočením od základního viewportu. Nejdříve si otevřete nové grafické okno s pomocí funkce windows(), x11() nebo quartz() v závislosti na Vašem operačním systému.
> vp <- viewport(width = 0.5, height = 0.2, angle = 45, name = "VP") #nejdříve zadefinujeme viewport - jeho velikost a úhel zobrazení
> pushViewport (vp) #tímto příkazem ho vnoříme do stromu viewportů, kde se kreslí graf - tím pádem je ten samý viewport i aktivní
> grid.rect() #tento příkaz vykreslí do aktivního viewportu čtverec
přidáme osy
> grid.xaxis()
> grid.yaxis()
popisný text
> grid.text("viewport oblast", y = 0.9)
Teď se přemístíme o úroveň výš (do root viewportu):
> upViewport()
... a napíšeme text:
> grid.text("root oblast", y = 0.1)
Teď jsme sice v root viewportu, ale do našeho obdélníku můžeme přesto vložit text, a to s pomocí argumentu vp=, kde specifikujeme jméno obdélníkového viewportu:
> grid.text("další text", vp = "VP", y = 0.7)
Tímto příkazem zjistíme, že jsme opravdu stále v kořenovém viewportu:
> current.viewport()
viewport[ROOT]
Demonstrujme si teď editovatelnost grid grafiky.
Vytvoříme čtverec s názvem box:
> grid.rect(name="box", gp=gpar(lwd=20))
Přidáme černý kruh:
> grid.circle(r=0.25, gp=gpar(fill="black"))
Změníme pozadí čtverce na žluté:
> grid.edit("box", gp=gpar(fill="yellow"))
A čtverec odstraníme:
> grid.remove("box")