Última actualización de este sitio: 29 noviembre, 2022
Estos ejemplos corresponden a figuras similares a la figura 2a de Salas et al. (2006) y figura 1 de Soto et al. (2010). | |
Ocuparemos la dataframe pspRuca del paquete datana del libro Análisis de datos con el programa estadístico R: una introducción aplicada de Salas-Eljatib (2021).
> library(datana)
> data(pspRuca)
> df <- pspRuca
revisemos los datos
> head(df) #primeras seis filas
tree.no spp status dbh x.coord y.coord crown.class
1 1 N. obliqua 1 65.50 2.7282 0.62986 1
2 2 A. punctatum 1 75.90 9.1970 4.30179 1
3 3 A. punctatum 1 44.10 17.1026 0.62677 1
4 4 E. cordifolia 1 135.75 20.0614 0.57813 1
5 5 A. punctatum 1 78.25 3.9795 2.20588 1
6 6 N. obliqua 1 91.80 5.1683 1.88111 1
> nrow(df) #numero de filas de la dataframe
[1] 716
Esta dataframe contiene la información de coordenadas cartesianas de árboles en una parcela de muestreo de 10.000 m\(^2\) (1 hectárea) en un bosque adulto de Olivillo-Roble-Laurel-Ulmo en el predio Rucamanque (Depresión intermedia de la región de la Araucanía, Chile). Los datos fueron recolectados por Salas et al. (2006).
Se muestra a continuación dos tipos de gráficos: uno donde se representan la distribución espacial de puntos y (b) otro donde además se incorpora información sobre una covariable observada en cada coordenada espacial. Ejemplos del primero se pueden observar en Salas et al. (2006) y del segundo en Soto et al. (2010).
Para realizar esta figura se cargará el paquete geoR Ribeiro and Diggle (2001) y otros relacionados como sigue
> library(geoR)
> library(splancs)
> library(spatstat)
Ahora se definen ciertas dataframes de grupos de datos que serán de nuestro interes
> # Creando las dataframes a ser usadas
> p5ruca<-df[df[,"status"]==1,] #todos los arboles vivos
> nvivos <- nrow(p5ruca)
> p5rucaAp<-df[df[,"spp"]=="A. punctatum"& df[,"status"]==1,] #vivos de Ap (Olivillo)
> p5rucaNo<-df[df[,"spp"]=="N. obliqua"& df[,"status"]==1,] #vivos de No (Roble)
> p5rucaLp<-df[df[,"spp"]=="L. philippiana"& df[,"status"]==1,] #vivos de Lp (Tepa)
> p5rucaDom<-df[df[,"crown.class"]==1& df[,"status"]==1,] #arboles dominantes vivos
> p5rucaDead<-df[df[,"status"]==2,] #arboles muertos en pie
> ndead <- nrow(p5rucaDead)
Ahora creamos las respectivas geo-datas como sigue
> # Creando las "Geo"-dataframes a ser usadas
> p5ruca.geo<-as.geodata(p5ruca,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> p5rucaAp.geo<-as.geodata(p5rucaAp,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> p5rucaNo.geo<-as.geodata(p5rucaNo,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> p5rucaLp.geo<-as.geodata(p5rucaLp,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> p5rucaDom.geo<-as.geodata(p5rucaDom,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> p5rucaDead.geo<-as.geodata(p5rucaDead,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
> par(mfrow=c(3,2),mai=c(0.25,0.45,.1,0),mgp=c(2.6,1,0),las=1,cex=0.6,cex.lab=1,cex.axis=0.9,pty="s")
> # ubicacion espacial de los arboles en la parcela
> range.x<-c(0,100);range.y<-c(0,100)
> plot.area<-max(range.x)*max(range.y)
>
> # todas las especies
> plot(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2], pch=16,cex=.75,
+ xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p")#,pch=".",cex=1.5)
> text(99, 100, expression(bold((a))))
> # Olivillio
> plot(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],col="green",# pch=16,cex=1.5,
+ xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)#,pch=".",cex=1.5)
> text(99, 100, expression(bold((b))))
> # Roble
> plot(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],col="blue",# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=16,cex=.75)#,pch=".",cex=1.5)
> text(99, 100, expression(bold((c))))
> # Tepa
> plot(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)
> text(99, 100, expression(bold((d))))
> # Arboles dominantes
> plot(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=16,cex=.75)
> text(99, 100, expression(bold((e))))
> # Arboles vivos muertos en pie
> plot(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2], col="red",# pch=16,cex=1.5,
+ xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)
> text(99, 100, expression(bold((f))))
> par(mfrow=c(3,2),mai=c(0.25,0.45,.1,0),mgp=c(2.6,1,0),las=1,cex=0.6,cex.lab=1,cex.axis=0.9,pty="s")
> # tree location plot
> range.x<-c(0,100);range.y<-c(0,100)
> plot.area<-max(range.x)*max(range.y)
>
> # All the Species
> plot(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5ruca.geo$coords[,1], p5ruca.geo$coords[,2],
+ circles = p5ruca.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> #text(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2],labels=p5ruca.geo$data,adj=c(0,1),cex=0.7)
>
> #lines(p5ruca.geo$coords[coords,1],p5ruca.geo$coords[coords,2],col="red",lwd=2)
> text(99, 100, expression(bold((a))))
> # Ap
> plot(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5rucaAp.geo$coords[,1], p5rucaAp.geo$coords[,2],
+ circles = p5rucaAp.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> #text(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],labels=p5rucaAp.geo$data,adj=c(0,1),cex=0.7)
> text(99, 100, expression(bold((b))))
> # No
> plot(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5rucaNo.geo$coords[,1], p5rucaNo.geo$coords[,2],
+ circles = p5rucaNo.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> text(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],labels=p5rucaNo.geo$data,adj=c(0,1),cex=0.7)
> text(99, 100, expression(bold((c))))
> # Lp
> plot(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5rucaLp.geo$coords[,1], p5rucaLp.geo$coords[,2],
+ circles = p5rucaLp.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> text(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],labels=p5rucaLp.geo$data,adj=c(0,1),cex=0.7)
> text(99, 100, expression(bold((d))))
> # Dominant trees
> plot(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5rucaDom.geo$coords[,1], p5rucaDom.geo$coords[,2],
+ circles = p5rucaDom.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> #text(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],labels=p5rucaDom.geo$data,adj=c(0,1),cex=0.7)
> text(99, 100, expression(bold((e))))
> # standing Dead trees
> plot(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2],# pch=16,cex=1.5,
+ xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
> #add circles are proportional to the variate being displayed.
> symbols(p5rucaDead.geo$coords[,1], p5rucaDead.geo$coords[,2],
+ circles = p5rucaDead.geo$data*100, add = T, inches =0.105, fg="blue")
> #add the response variable values
> text(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2],labels=p5rucaDead.geo$data,adj=c(0,1),cex=0.7)
> text(99, 100, expression(bold((f))))
geoR
: A package for
geostatistical analysis.” R News 1 (2): 14–18.