Hlavní navigace

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

Rado Bonk

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().

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.

Našli jste v článku chybu?

16. 9. 2002 13:16

JTS (neregistrovaný)

Pěkný článek, ovšem graf s vícero čarami bych nejspíše nedělal pomocí lines(), ale pomocí par(new=TRUE) a pak, třeba cyklem přes řádky
plot(prietoky[i,], pch=i, type="b").
Ještě elegantnější alternativa je, tuším,
apply(prietoky,plot(type="b"),1), ovšem teď nevím, jak bych si řekl o různé znaky, tj. o parametr "pch".




Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Flix TV startuje i na Slovensku

Flix TV startuje i na Slovensku

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed