Hlavní navigace

Zabudnite na gnuplot, prichádza "R" (3)

5. 9. 2002
Doba čtení: 4 minuty

Sdílet

Po kratšej prestávke pokračujeme v seriáli o štatistickom a grafickom prostredí R. Dnešná časť bezprostredne nadväzuje na časť minulú a v príkladoch používa tiež dáta v nej vyprodukované. Formou príkazov a grafiky ukazuje, ako sa dá narábať s jednotlivými elementmi matice. V závere nasleduje lahôdka - produkcia postskriptovej grafiky.

Pre tých, čo začali sledovať seriál o eRku až teraz, je tu krátky návod, ako importovať dátový súbor do eRka tak, aby mohli plynule pokračovať v tejto časti. Ak sa niekto cíti zaskočený, treba si pozrieť minulú časť. Import dátového súboru, ktorý sa používa v tejto časti, sa v eRku prevedie nasledovným príkazom.

Tabulka č. 327
> prietoky.new <- read.table("prietoky.new.txt")

Ak chceme vykresliť priebeh mesačných prietokov práve pre jeden tok, použijeme maticu prietokov, kde pomocou [m,n] zápisu špecifikujeme, ktorý tok chceme vykresliť. Prvá pozícia špecifikuje riadky, druhá stĺpce matice. Zápis [3,] špecifikuje celý tretí riadok matice (Obr. 3).

Tabulka č. 328
> barplot(prietoky.new[3,])


Ak nás zaujímajú len prietoky vybraných tokov, a aj to len počas určitej časti roka, môžme to vo funkcii barplot() špecifikovať nasledovne (Obr. 4):

Tabulka č. 329
> legenda3 <- c("Biskupice/Bebrava","Nadlice/Bebrava",
"Chalmova/Nitra")

> barplot(prietoky.new[2:4,3:5], beside=T,
+ legend.text=legenda3,main="Average monthly
+ discharges of upper Nitra rivers", sub="(1931 - 1980)",
+ xlab="month", ylab="discharge [m^3/s]")


Takisto môžme pozorovania zakresliť do grafu formou kriviek. Tu je treba uviesť trochu teórie k grafickým príkazom eRka. Medzi tzv. príkazy prvej úrovne patria: plot(), coplot(), pairs()… . Tie vykresľujú všetky potrebné entity. Ak však chceme k už existujúcej grafike pridať ešte dodatočné grafické entity, použijeme príkazy druhej úrovne, kde patria napr. lines(), ablines(), text()… . Tie len dokreslia dodatočné entity k už exitujúcej grafike, pričom ju neprekreslia. Tak možno k existujúcim grafikám pridávať čiary, či texty tam, kde je to potrebné. Nasledovnými príkazmi vykreslíme krivkami grafy prietokov, najprv sa použije príkaz prvej úrovne (plot()), a potom 5 krát príkaz druhej úrovne (lines()). Rozsah osi „y“ zistíme cez min(prietoky.new) a max(prietoky.new), nastavíme ju voľbou ylim=range[max:min], alebo ylim=range[min(pri­etoky.new):max(pr­ietoky.new)] (Obr. 5).

Tabulka č. 330
> plot(prietoky.new[1,], type="b", ylim=range(0:30),
+ main="Average monthly discharges of upper
+ Nitra rivers", sub="(1931 - 1980)",
+ ylab="discharge [m^3/s]", xlab="month")
> lines(prietoky.new[2,], type="b", lty=2)
> lines(prietoky.new[3,], type="b", lty=3)
> lines(prietoky.new[4,], type="b", lty=4)
> lines(prietoky.new[5,], type="b", lty=5)

> lines(prietoky.new[6,], type="b", lty=6)



Produkcia postcriptovej grafiky

Všetky kvalitné programy, ktoré produkujú grafické výstupy vo forme grafov (gnuplot, grace, …) či máp (GRASS, GMT, …), umožňujú ukladanie grafických výstupov do postskriptu. Ten sa dá jednoducho začleniť do LaTeXovského dokumentu a prezentovať tak grafiku v tlačovej kvalite. Produkcia postskriptovej grafiky v eRku je veľmi jednoduchá. Realizuje sa cez nastavenie konkrétneho zariadenia (device).
Keď vidíme grafický výstup z eRka na obrazovke, je tomu tak preto, že aktívnym zariadením je v tej chvíli tzv. x11(). To sa aktivuje po zadaní prvého grafického príkazu automaticky. Postskriptové zariadenie, teda zariadenie pre prodkuciu grafiky vo formáte EPS, alebo PS, sa aktivuje príkazom postscript(). Od chvile, keď sa príkaz použije, sa zariadenie stáva aktívnym zariadením, a grafické výstupy po zadaní príkazu na produkciu grafiky sa ukladajú do súboru s prednastaveným menom (Rplots.ps). V jednej chvíli je aktívne práve jedno zariadenie, teda to, ktoré bolo naposledy zadefinované. Zoznam zariadení, požívaných v konkrétnom R sedení získame príkazom dev.list(). Aktivovanie niektorého zariadenia zo zoznamu zasa príkazom dev.set(which=). K čomu je dobré mať nadefinovaných viacero zariadení? Dobrým dôvodom je mať napríklad zadefinované dve postskriptové zariadenia a v každom z nich mať zadefinovanú rôznu veľkosť výstupnej EPS grafiky (zadefinovanie veľkosti a názvu výstupného súboru sa realizuje zadaním argumentov príkazu postscript()). Pozor, pred tým než si prezrieme výsledný EPS súbor prehliadačom gv, treba aktívne postskriptové zariadenie vypnúť príkazom dev.off(k), kde k je číslo zariadenia získané príkazom dev.list(). Ak aktívne postskriptové zariadenie nevypneme, výsledný EPS súbor bude nekompletný, a nebude v ňom teda to, čo by sme inak videli za použitia zariadenia x11().

UX DAy - tip 2

V tomto krátkom sedení si ukážeme zadefinovanie dvoch postskriptových zariadení s rôznym menom, veľkosťou a typom výstupného súboru. Aktivovanie prvého z nich (pretože aktívne je stále posledné definované zariadenie). Potom použijeme príkaz na produkciu stĺpového diagramu, obe zariadenie vypneme a nakoniec už v normálnom linuxovom prompte prezrieme grafiku príkazom gv.

Tabulka č. 331
$ R
> postscript("grafika.large.eps", width=10, heigth=6, horizontal=FALSE)
> postscript("grafika.small.ps", width=6, heigth=3, horizontal=FALSE)
> dev.list()
#tu je výpis používaných zariadení s ich indexami
> dev.set(which=2)
> barplot(prietoky.new[4,])
> dev.set(which=3)
> barplot(prietoky.new[4,])
> dev.off(3)

> dev.off(2)
> quit()
$ gv grafika.large.eps
$ gv grafika.small.eps

Teraz už nič nebráni zakomponovaniu postskriptových výstupov z eRka do LaTeXovského dokumentu. Nabudúce budeme pokračovať v produkcii grafiky príkazmi nižšej úrovne. Pôjde teda o doplnenie grafických entít k už existujúcej grafike tak, aby grafický výstup vyzeral presne tak, ako si to praje užívateľ, alebo diplomový vedúci, oponent, či prateľka.

Byl pro vás článek přínosný?

Autor článku