Estos ejemplos corresponden a figuras similares a la figura 2a de Salas et al. (2006) y figura 1 de Soto et al. (2010).

Cargando los datos de ejemplo

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
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 informacion de coordenadas cartesianas de arboles 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 (Depresion intermedia de la region de la Araucania, Chile). Los datos fueron recolectados por Salas et al. (2006).

Los gráficos

Se muestra a continuacion dos tipos de gráficos: uno donde se representan la distribucion espacial de puntos y (b) otro donde ademas se incorpora informacion 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 cargara el paquete geoR Ribeiro and Diggle (2001) como sigue

library(geoR)
--------------------------------------------------------------
 Analysis of Geostatistical Data
 For an Introduction to geoR go to http://www.leg.ufpr.br/geoR
 geoR version 1.8-1 (built on 2020-02-08) is now loaded
--------------------------------------------------------------
library(splancs)
Loading required package: sp

Spatial Point Pattern Analysis Code in S-Plus
 
 Version 2 - Spatial and Space-Time analysis
library(spatstat)
Loading required package: spatstat.data
Loading required package: nlme
Loading required package: rpart

spatstat 1.64-1       (nickname: 'Help you I can, yes!') 
For an introduction to spatstat, type 'beginner' 

Note: R version 3.6.3 (2020-02-29) is more than a year old; we strongly recommend upgrading to the latest version

Attaching package: 'spatstat'
The following object is masked from 'package:MASS':

    area

Ahora se definen ciertas dataframes de grupos de datos que seran de nuestro interes

# Creating the datafraes to be used                                      
p5ruca<-df[df[,"status"]==1,]  #all the live trees
nvivos <- nrow(p5ruca)
p5rucaAp<-df[df[,"spp"]=="A. punctatum"& df[,"status"]==1,] #lives Ap
p5rucaNo<-df[df[,"spp"]=="N. obliqua"& df[,"status"]==1,] #lives No (Roble)
p5rucaLp<-df[df[,"spp"]=="L. philippiana"& df[,"status"]==1,] #lives Lp (Tepa)
p5rucaDom<-df[df[,"crown.class"]==1& df[,"status"]==1,] #lives Dominant trees
p5rucaDead<-df[df[,"status"]==2,]  #all the Dead trees
ndead <- nrow(p5rucaDead)

y ahora creamos las respectivas geo-datas como sigue

# Creating the "Geo"-dataframes to be used
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"))

Gráfico de distribucion espacial

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=.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))))
# Ap
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))))
# No
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))))
# Lp
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))))
# 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=16,cex=.75)
text(99, 100, expression(bold((e))))
# standing Dead trees
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))))