Česká verze stránek není od roku 2013 aktualizována. Aktuální verzi této stránky najdete v její anglické verzi zde.
Následující kreslící funkce používají výsledků DCA, vypočteného na datech z údolí Vltavy:
veg.data <- read.delim ('http://www.davidzeleny.net/anadat-r/data-download/vltava-spe.txt', row.names = 1) env.data <- read.delim ('http://www.davidzeleny.net/anadat-r/data-download/vltava-env.txt') library (vegan) DCA <- decorana (veg = veg.data)
Jednou z možností, jak dokreslit do ordinačního diagramu popisky tak, aby se daly alespoň některé přečíst, je vykreslit jen některé a ostatní nahradit nějakým symbolem. Nejdříve je třeba vytvořit prázdný ordinační diagram, v tomto případě nachystaný na vykreslení druhů (argument type = 'n'
zajistí, že se do diagramu nenakreslí ani body, ani text):
ordiplot (DCA, display = 'sp', type = 'n')
a nyní dokreslíme vlastní popisky:
orditorp (DCA, display = 'sp')
Další možností je dokreslit popisky tzv. nálepkovou metodou:
ordiplot (DCA, display = 'sp', type = 'n') ordilabel (DCA, display = 'sp')
Další možnosti: identify.ordiplot
, která umožňuje přiřadit popisky k bodům na které v obrázku klikneme myší, a orditkplot
, která vytváří víceméně interaktivní obrázky (zatím ale nevypadají nic moc). Jejich uložení v grafickém formátu moc nefunguje, ale je možné použít tlačítko “Dump to R”, uložit obrázek jako objekt R pod nějakým názvem (např. fig1
) a pak ho nakreslit pomocí funkce plot (fig1)
.
Funkce points
umožňuje dokreslovat do ordinačního diagramu body pro jednotlivé vzorky nebo druhy, a flexibilně měnit vlastnosti těchto bodů (barvu, tvar, velikost). Následující příklady používají klasifikaci vegetačních snímků pomocí numerické klasifikace (Wardova metoda na euklidovských distancích) do čtyř skupin, která je uložená v datovém rámci env.data
v proměnné GROUP
.
Nakreslíme prázdný ordinační diagram, naškálovaný na kreslení vzorků, a do něj dokreslíme jednotlivé body - pro každou skupinu zvolíme jinou barvu a jiný symbol:
ordiplot (DCA, display = 'si', type = 'n') points (DCA, col = env.data$GROUP, pch = env.data$GROUP )
Dokresluje obálky kolem skupin bodů (ordihull
) nebo tzv. pavučiny, které spojují body z jednotlivých skupin s centroidem skupiny (ordispider
). Argument label = T
umožňuje kreslení popisků do středu pavouka:
ordiplot (DCA, display = 'si', type = 'n') for (i in seq (1, 4)) ordispider (DCA, groups = env.data$GROUP, show.groups = i, col = i, label = T)
for (i in seq (1, 5)) ordihull (DCA, groups = klas, show.groups = i, col = i, lty = 'dotted')
Tato funkce vyžaduje knihovnu geometry
, kterou můžete nainstalovat následovně:
install.packages ('geometry')
Následuje moje definice funkce (před jejím použitím je třeba funkci nadefinovat - překopírujte obsah následujícího okna do příkazového řádku eRka):
orglhull <- function (object, groups, display = 'sites', choices = 1:3, show.groups = NULL, ...) { require (geometry, quietly = T) require (rgl) pts <- scores (object, choices = choices, display = display, ...) if (!is.null(show.groups)) {take <- groups %in% show.groups pts <- pts[take, , drop = FALSE] groups <- groups[take]} out <- seq (along = groups) inds <- names (table (groups)) for (is in inds) { gr <- out[groups == is] if (length (gr) == 2) { X <- pts[gr,] rgl.lines (X[,1], X[,2], X[,3], lwd = 2, ...) } if (length (gr) == 3) { X <- pts[gr,] rgl.triangles (X[,1], X[,2], X[,3], ...) } if (length (gr) > 3) { X <- pts[gr,] # check if the points are not situated in hyperplane bas.matrix <- X[1:3,] D <- det (bas.matrix) d <- 1 bas.matrix.a <- bas.matrix bas.matrix.a[,1] <- 1 a <- -d/D*det (bas.matrix.a) bas.matrix.b <- bas.matrix bas.matrix.b[,2] <- 1 b <- -d/D*det (bas.matrix.b) bas.matrix.c <- bas.matrix bas.matrix.c[,3] <- 1 c <- -d/D*det (bas.matrix.c) kolik <- a*X[,1]+b*X[,2]+c*X[,3] + d save (X, file = 'X.r') if (all (abs (kolik) <= 1e-10)) X <- X + runif (length (X), min = -1e-5, max = 1e-5) tr <- t (convhulln (X,"FA")$hull) print (tr) rgl.triangles (X[tr,1], X[tr,2], X[tr,3], ...) } } invisible () }
A takto je možné funkci použít:
orglhull (DCA, groups = env.data$GROUP)