Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Tvorba grafů pomocí programu "R": úvod

V těchto a minulých dnech jsem měl možnost seznámit se blíže s tvorbou grafů v programu R. Rád bych se s vámi o tyto zkušenosti podělil. Doufám, že se tím otevře cesta potenciálním zájemcům o tento program. Jsou chvíle, kdy se sebelepší tabulkový kalkulátor musí sklonit před sílou Rka. Ale to již předbíhám, takže hurá do toho.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Motivace

Přišla za mnou kamarádka, že by potřebovala do své diplomové práce udělat pár grafů. Data prý má, jenom by potřebovala trošku pomoct s těmi grafy. Ukázalo se, že grafů bude cca dvě stě kousků a mně se, při představě proklikaných nocí, začala lehce třepat kolena. Když se ještě vytasila s tím, že by nad některými sloupečky měla být nějaká písmenka a nad některými ne, začala se mi kolena třepat již výrazně více. Záhy jsem si uvědomil, že má-li náš vztah přežít, musím na to jít z gruntu jinak. I vzpomněl jsem si na články od Rada Bonka, nelenil jsem a začal pronikat do tajů tohoto programu. Vyplatilo se. Diplomka je v tisku a náš vztah zachráněn.

Vocogou?

Rko je programovací jazyk a prostředí pro statistické počty a grafy. Vychází z jazyka S, který byl vyvinut v Bellových laboratořích Johnem Chambersem a jeho kolegy.

Rko je asi nejpoužívanější nekomerční produkt, který se může směle postavit např. komerčnímu SASu. Běhá na všech důležitých platformách. Díky široké uživatelské základně je k dispozici množství přídavných balíčků, které jeho schopnosti ještě umocňují. U nás je Rko velmi oblíbené zejména mezi botaniky na úplně jiné platformě, než je GNU/Linux ;-)

Tento článek by však měl být o grafech, což je jenom malá část schopností Rka. Dobrým úvodem do Rka obecně může být Úvod k S pana Petra Šmilauera.

Jednoduchý začátek

Začneme poměrně jednoduše. Předpokládám základní znalost Rka, kterou jste bezpochyby nabyli pečlivou četbou zmiňovaných článků Rada Bonka.

připraveného souboru načteme data, se kterými budeme pracovat. Soubor obsahuje data výskytu deseti jevů (např. stanovištních typů rostlin) na třech lokalitách.

V prvním kroku spustíme Rko (příkazem R) a data načteme. Data z externího souboru se načítají příkazem read.table, který může mít množství parametrů. Nás zajímá především parametr header, který nastavíme na hodnotu TRUE. Rko má velmi dobře propracovanou nápovědu. Tu získáte ke všem příkazům >help(jmeno_pri­kazu), tedy například > help(read.table) vás dopodrobna seznámí s modulem pro čtení dat z externích zdrojů. Určitě stojí také za zmínku příkaz example(), ke kterému se uchyluji pokaždé, když marně hledám inspiraci. Schválně vyzkoušejte, co udělá example(barplot). Nyní již tedy víme, jak bude příkaz vypadat:

> read.table("rdata.txt", header=T)

Při práci s Rkem si musíte rychle zvyknout na jednu věc:

Vše může být pole.

Vše můžete načítat do proměnných. Proměnná může obsahovat sekvenci čísel nebo textových řetězců. Pole mohou být vícerozměrná.

Tím, že jsme provedli příkaz read.table, se dohromady nic zvláštního nestalo. Data se nám jenom vytiskla na obrazovku. My je ale můžeme načíst do proměnné, a to se v Rku dělá přiřazovacím znaménkem ‚ <-‘. Proto nyní data načteme do proměnné skupiny:

> skupiny<-read.table("rdata.txt", header=T)
> skupiny
                      lokalita1 lokalita2 lokalita3
1 - čerstvé, bohaté           2.569   0.857   1.573
2 - nitrofilní                1.468   0.000   0.000
3 - velmi chudé              11.835   2.571   2.022
4 - suché, chudé              0.826   0.571   0.449
5 - mírně vlhké, chudé       43.394   2.571  28.090
6 - čerstvé, středně bohaté  36.789  82.857  59.775
7 - střídavě vlhké            3.119   7.429   7.640
8 - vlhké                     0.000   0.571   0.449
9 - bohaté                    0.000   2.571   0.000
10 - rašelinné                3.119   7.429   7.640
>

Na rozdíl od polí, která známe z běžných programovacích jazyků, má první prvek v poli (v tomto případě v matici) číslo 1. Formát u matice je  jméno[řádek,sloupec]:

> skupiny[0,0]
NULL data frame with 0 rows
> skupiny[1,1]
[1] 2.569
> skupiny[1,]
                   lokalita1  lokalita2 lokalita3
1 - čerstvé, bohaté     2.569     0.857     1.573

Jenom snad krátce zabruslím na tenký led statistické analýzy:

> summary(skupiny)
   lokalita1         lokalita2         lokalita3
 Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000
 1st Qu.: 0.9865   1st Qu.: 0.6425   1st Qu.: 0.449
 Median : 2.8440   Median : 2.5710   Median : 1.798
 Mean   :10.3119   Mean   :10.7427   Mean   :10.764
 3rd Qu.: 9.6560   3rd Qu.: 6.2145   3rd Qu.: 7.640
 Max.   :43.3940   Max.   :82.8570   Max.   :59.775
>

Konečně nějaký graf

Rko nám poskytuje nepřeberné množství možností tvorby grafů. Standardně mají výstup v grafickém okně. Další možností je přesměrování výstupu do PostScriptového souboru a milou vlastností je export přímo do LaTeXu. Tím se ovšem zabývat nebudeme.

Předtím, než začneme s daty pracovat, je musíme převést na matici. To se dělá příkazem

> skupiny<-as.matrix(skupiny)

Stejně tak jsme je mohli tímto způsobem zajistit už při nahrávání ze souboru:

> skupiny<-as.matrix(read.table("rdata.txt", header=T)) 

První sloupcový graf pak vytvoříme příkazem

> barplot(skupiny)

První sloupcový graf

Dostali jsme sloupcový graf, v němž jsou jednotlivé lokality zastoupeny vlastním sloupcem, který je poměrně rozdělen podle zastoupení skupin rostlin.

Zajímavější by ale mohlo být znázornění jednotlivých sloupců vedle sebe, což zajistíme nastavením hodnoty parametru beside na TRUE:

> barplot(skupiny, beside=T)

Druhý sloupcový graf

Co když ale chceme vytisknout sloupcový graf jen pro jednu lokalitu? Možností je víc. Buď to uděláme úplně stejně, jako bychom si tiskli data z jedné lokality:

> skupiny[,1]
čerstvé, bohaté          nitrofilní             velmi chudé
          2.569               1.468                  11.835
   suché, chudé  mírně vlhké, chudé čerstvé, středně bohaté
          0.826              43.394                  36.789
 střídavě vlhké               vlhké                  bohaté
          3.119               0.000                   0.000
      rašelinné
          3.119
> barplot(skupiny[,1], beside=T) 

A nebo si vytvoříme novou proměnnou lokalita1 a dál budeme pracovat s ní:

davame_internetu_obsah
       
> lokalita1 <- skupiny[,1]
> barplot(lokalita1, beside=T)

Třetí sloupcový graf

Můžete již vidět, že Rko se snaží vyplnit i legendu na ose x. K tomu se ale dostaneme v dalším pokračování, ve kterém hned na začátku začneme vyšperkovávat náš grafík.

Školení: Hackujeme operační systém Android

 

Školení vám ukáže, jak se dostat k Linuxu (tzv. "rootování"), který se pod hezkou tváří Androida skrývá a jak ho naplno využít. Pomůže vám to při záloze dat, zvětšování prostoru pro aplikace nebo sdílení připojení k internetu a pokud chcete z telefonu dostat opravdové maximum, ukážeme vám, jak v něm vyměnit kompletní systém za lepší.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,69

Přehled názorů

Nechci být purista
Karlos 26. 5. 2004 07:25
Nový
├ 
Re: Nechci být purista
... 26. 5. 2004 08:09
Nový
│
└ 
Re: Nechci být purista
Yeti 26. 5. 2004 09:12
Nový
└ 
Re: Nechci být purista
guma 26. 5. 2004 08:20
Nový
 
└ 
Re: Nechci být purista
Yeti 26. 5. 2004 09:23
Nový
 
 
└ 
Re: Nechci být purista
šarmúta bin kalba 26. 5. 2004 18:44
Nový
 
 
 
└ 
Re: Nechci být purista
misof 27. 5. 2004 12:38
Nový
Diakritika
Tomáš 26. 5. 2004 07:49
Nový
├ 
Re: Diakritika
polish 26. 5. 2004 08:42
Nový
└ 
Re: Diakritika
LP 26. 5. 2004 17:19
Nový
Všem lidem ohledně diakritiky
Jáchym Čepický 26. 5. 2004 08:56
Nový
Skvely clanek
Petr 26. 5. 2004 09:37
Nový
Podobný problém bych asi řešil metapostem
Jan Šimůnek 26. 5. 2004 09:39
Nový
└ 
Re: Podobný problém bych asi řešil metapostem
Pavel 27. 5. 2004 13:32
Nový
celkom dobre, ale
zen master 26. 5. 2004 10:09
Nový
perl?
pajout 26. 5. 2004 10:10
Nový
├ 
Re: perl?
Jáchym Čepický 26. 5. 2004 10:29
Nový
└ 
Re: perl?
LP 26. 5. 2004 17:14
Nový
Mirne nepochopeni...
P. Cernoch 26. 5. 2004 16:25
Nový
└ 
Re: Mirne nepochopeni...
Jáchym Čepický 26. 5. 2004 21:09
Nový
OT: R a koeficienty kontingence
mol 26. 5. 2004 16:56
Nový
├ 
Re: OT: R a koeficienty kontingence
jano 26. 5. 2004 17:42
Nový
│
└ 
Re: OT: R a koeficienty kontingence
mol 26. 5. 2004 20:28
Nový
└ 
Re: OT: R a koeficienty kontingence
anonymní uživatel 26. 3. 2007 13:10
Nový
Problém s destinnou čárkou, jinak je R vynikající
jano 26. 5. 2004 19:21
Nový
R a SAS a vůbec freesoft na statistiku
pracant 26. 5. 2004 21:31
Nový
├ 
Re: R a SAS a vůbec freesoft na statistiku
anonymní uživatel 26. 5. 2004 23:07
Nový
└ 
Re: R a SAS a vůbec freesoft na statistiku
LP 27. 5. 2004 17:29
Nový
 
└ 
Re: R a SAS a vůbec freesoft na statistiku
Petr 27. 5. 2004 20:26
Nový
Grace - program na tvorbu grafů
Ondřej Čertík 26. 5. 2004 21:44
Nový
└ 
Re: Grace - program na tvorbu grafů
Pichi 27. 5. 2004 10:37
Nový
bez titulku
nudle 27. 5. 2004 01:23
Nový
└ 
Re:
Jáchym Čepický 27. 5. 2004 09:02
Nový
a co 3D?
Radek Polak 27. 5. 2004 06:25
Nový
├ 
Re: a co 3D?
Jáchym Čepický 27. 5. 2004 09:04
Nový
└ 
Re: a co 3D?
LP 27. 5. 2004 17:05
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem