Análise da estrutura horizontal de comunidades vegetais

A fitossociologia é uma área complexa das ciências naturais que tem como objetivo caracterizar a distribuição, o agrupamento e as relações entre espécies em comunidades vegetais naturais, de modo a descrever sua estrutura e composição. A análise fitossociológica permite caracterizar vegetações quanto a sua tipologia, estágio sucessional e estado de conservação, subsidiando o manejo, a recuperação e a conservação de ecossistemas.

Este é o primeiro de uma série de posts em que apresentarei procedimentos para estudos fitossociológicos empregando dados reais (acesse os outros posts em que apresento procedimentos para cálculo de índices ecológicos e construção de curvas de acumulação de espécies e de rarefação). Nesse exemplo, faremos a análise da estrutura horizontal de uma comunidade de cerrado. Começaremos importando e visualizando dados oriundos de um levantamento realizado a partir de 29 unidades amostrais de 100 m².
Obs: Para baixar os dados utilizados nesse exemplo, clique aqui.

# Importar base de dados
dados <- readxl::read_excel("dados_fitossociologia.xlsx")
# Visualizar dados importados
dados
## # A tibble: 541 × 6
##    Parcela Arvore   DAP Altura Familia         Especie              
##      <dbl>  <dbl> <dbl>  <dbl> <chr>           <chr>                
##  1       1      1 13.5     5   Dilleniaceae    Curatella americana  
##  2       1      2  5.57    3.5 Annonaceae      Annona coriacea      
##  3       1      3  5.09    4   Lauraceae       Ocotea minarum       
##  4       1      4  5.25    4   Lauraceae       Ocotea minarum       
##  5       1      5 11.8     4   Ebenaceae       Diospyros hispida    
##  6       1      6  7.96    5.5 Fabaceae        Copaifera langsdorfii
##  7       1      7  8.91    4.5 Sapindaceae     Matayba elaegnoides  
##  8       1      8  5.89    3.5 Ebenaceae       Diospyros hispida    
##  9       1      9  8.75    4.5 Ebenaceae       Diospyros hispida    
## 10       1     10  4.77    2.5 Melastomataceae Miconia sp1          
## # ℹ 531 more rows
# Visualizar as espécies amostradas
unique(dados$Especie)
##  [1] "Curatella americana"      "Annona coriacea"         
##  [3] "Ocotea minarum"           "Diospyros hispida"       
##  [5] "Copaifera langsdorfii"    "Matayba elaegnoides"     
##  [7] "Miconia sp1"              "Pouteria torta"          
##  [9] "Byrsonima verbascifolia"  "Alibertia edulis"        
## [11] "Qualea grandiflora"       "Leptolobium elegans"     
## [13] "Myrcia sp1"               "Terminalia argentea"     
## [15] "Indeterminada 2"          "Connarus suberosus"      
## [17] "Xylopia aromatica"        "Psidium laruotteanum"    
## [19] "Andira cuiabensis"        "Annona crassiflora"      
## [21] "Dimorphandra mollis"      "Indeterminada 1"         
## [23] "Tabebuia aurea"           "Campomanesia adamantium" 
## [25] "Tachigali aurea"          "Byrsonima basiloba"      
## [27] "Qualea parviflora"        "Schefflera macrocarpa"   
## [29] "Tapirira guianensis"      "Handroanthus albus"      
## [31] "Rhamnidium elaeocarpum"   "Anadenanthera falcata"   
## [33] "Vochysia cinnamomea"      "Byrsonima coccolobifolia"
## [35] "Couepia grandiflora"      "Buchenavia tomentosa"    
## [37] "Syagrus flexuosa"         "Erythroxylum suberosum"  
## [39] "Lafoensia pacari"         "Eriotheca gracilipes"    
## [41] "Magonia pubescens"        "Kielmeyera coriacea"     
## [43] "Bauhinia ungulata"        "Vatairea macrocarpa"     
## [45] "Byrsonima pachyphylla"    "Roupala montana"         
## [47] "Ouratea hexasperma"       "Pouteria ramiflora"      
## [49] "Dipteryx alata"           "Eugenia aurata"          
## [51] "Casearia sylvestris"      "Machaerium acutifoium"   
## [53] "Bauhinia rufa"            "Eugenia punicifolia"     
## [55] "Caryocar brasiliense"     "Ouratea spectabilis"     
## [57] "Himenaea courbaril"       "Calliandra sp1"
# Visualizar as famílias amostradas
unique(dados$Familia)
##  [1] "Dilleniaceae"     "Annonaceae"       "Lauraceae"        "Ebenaceae"       
##  [5] "Fabaceae"         "Sapindaceae"      "Melastomataceae"  "Sapotaceae"      
##  [9] "Malpighiaceae"    "Rubiaceae"        "Vochysiaceae"     "Myrtaceae"       
## [13] "Combretaceae"     "Indeterminada"    "Connaraceae"      "Bignoniaceae"    
## [17] "Araliaceae"       "Anacardiaceae"    "Rhamnaceae"       "Chrysobalanaceae"
## [21] "Arecaceae"        "Erythroxylaceae"  "Lythraceae"       "Malvaceae"       
## [25] "Calophyllaceae"   "Proteaceae"       "Ochnaceae"        "Salicaceae"      
## [29] "Caryocaraceae"

Ao todo 541 indivíduos foram amostrados no levantamento, abrangendo 58 espécies distribuídas em 29 famílias. Os principais parâmetros que descrevem a estrutura horizontal são apresentados a seguir.

Parâmetro Fórmula
Densidade absoluta DAi=ni/A
Densidade relativa DRi=niN100
Frequência absoluta FAi=uiU100
Frequência relativa FRi=FAiFA100
Dominância absoluta DoAi=giA
Dominância relativa DoRi=giG
Índice de Valor de Importância IVIi=DRi+FRi+DoRi

Em que: ni = quantidade de indivíduos amostrados da espécie i; A = área total amostrada em hectares;N = quantidade total de indivíduos amostrados; ui = número de unidades amostrais em que a espécie i foi registrada; U = quantidade total de unidades amostrais; gi = área basal total ocupada pela espécie i; G = soma da área basal de todos os indivíduos amostrados.

Agora vamos aplicar as fórmulas acima descritas aos dados que importamos para descrever a estrutura horizontal da comunidade amostrada. Ao final, geraremos uma tabela que apresenta os parâmetros calculados para todas as espécies, ordenadas pelo IVI.

# Definir tamanho da unidade amostral em m²
area_ua <- 100
# Número de parcelas
n_ua <- length(unique(dados$Parcela))
# Área total amostrada
A <- area_ua*n_ua
# Calcular área transversal dos indivíduos amostrados
dados$g <- pi*dados$DAP^2/40000 
# Contar número de indivíduos por espécie
N <- table(dados$Especie)
# Densidades absoluta e relativa
DA <- N*10000/A
DR <- DA/sum(DA)*100
# Frequências absoluta e relativa
FA <- sapply(unique(dados$Especie),
         function(x){
           length(unique(subset(dados,dados$Especie==x)$Parcela))/n_ua
           })*100
FA <- FA[order(names(FA))]
FR <- FA/sum(FA)*100
# Dominâncias absoluta e relativa
DOA <- aggregate(dados$g, list(dados$Especie), sum)$x*10000/A
DOR <- DOA/sum(DOA)*100

# Montar tabela
tabela_fito <- data.frame(Especie=names(N),
                          N=as.vector(N),
                          DA=round(as.vector(DA),1),
                          DR=round(as.vector(DR),1),
                          FA=round(as.vector(FA),1),
                          FR=round(as.vector(FR),1),
                          DoA=round(DOA,1),
                          DoR=round(DOR,1),
                          IVI=round(as.vector(DR+FR+DOR),1))

# Ordenar por IVI
tabela_fito <- tabela_fito[order(tabela_fito$IVI,decreasing = T),]

# Mostrar tabela
library(dplyr)
knitr::kable(tabela_fito, row.names = F)%>%
  kableExtra::kable_styling(full_width = TRUE, position = "center",fixed_thead = T)
Especie N DA DR FA FR DoA DoR IVI
Leptolobium elegans 61 210.3 11.3 65.5 6.5 1.7 9.2 27.0
Qualea grandiflora 44 151.7 8.1 48.3 4.8 1.8 10.0 22.9
Qualea parviflora 29 100.0 5.4 51.7 5.1 2.1 11.6 22.1
Pouteria torta 35 120.7 6.5 51.7 5.1 1.7 9.1 20.7
Myrcia sp1 41 141.4 7.6 65.5 6.5 0.8 4.5 18.5
Curatella americana 21 72.4 3.9 31.0 3.1 1.0 5.4 12.3
Anadenanthera falcata 11 37.9 2.0 20.7 2.0 1.1 6.2 10.3
Miconia sp1 28 96.6 5.2 34.5 3.4 0.3 1.7 10.3
Diospyros hispida 20 69.0 3.7 34.5 3.4 0.5 2.5 9.6
Alibertia edulis 19 65.5 3.5 37.9 3.7 0.2 1.2 8.5
Matayba elaegnoides 18 62.1 3.3 27.6 2.7 0.3 1.4 7.5
Annona coriacea 11 37.9 2.0 34.5 3.4 0.2 1.2 6.7
Tabebuia aurea 11 37.9 2.0 27.6 2.7 0.3 1.6 6.4
Byrsonima coccolobifolia 12 41.4 2.2 27.6 2.7 0.2 1.2 6.2
Copaifera langsdorfii 5 17.2 0.9 13.8 1.4 0.6 3.4 5.7
Tapirira guianensis 6 20.7 1.1 6.9 0.7 0.7 3.9 5.7
Vochysia cinnamomea 6 20.7 1.1 17.2 1.7 0.4 2.4 5.2
Lafoensia pacari 9 31.0 1.7 20.7 2.0 0.2 1.3 5.0
Byrsonima verbascifolia 8 27.6 1.5 24.1 2.4 0.2 1.0 4.9
Eriotheca gracilipes 7 24.1 1.3 20.7 2.0 0.3 1.5 4.8
Byrsonima pachyphylla 7 24.1 1.3 17.2 1.7 0.3 1.4 4.4
Dimorphandra mollis 6 20.7 1.1 17.2 1.7 0.3 1.5 4.3
Tachigali aurea 7 24.1 1.3 13.8 1.4 0.3 1.5 4.1
Terminalia argentea 5 17.2 0.9 13.8 1.4 0.3 1.8 4.1
Connarus suberosus 9 31.0 1.7 13.8 1.4 0.1 0.8 3.8
Pouteria ramiflora 7 24.1 1.3 20.7 2.0 0.1 0.5 3.8
Handroanthus albus 7 24.1 1.3 13.8 1.4 0.1 0.5 3.1
Ocotea minarum 7 24.1 1.3 13.8 1.4 0.1 0.4 3.0
Machaerium acutifoium 4 13.8 0.7 10.3 1.0 0.2 1.0 2.8
Annona crassiflora 4 13.8 0.7 13.8 1.4 0.1 0.6 2.7
Bauhinia ungulata 5 17.2 0.9 13.8 1.4 0.1 0.3 2.6
Psidium laruotteanum 4 13.8 0.7 13.8 1.4 0.1 0.5 2.6
Campomanesia adamantium 6 20.7 1.1 10.3 1.0 0.1 0.3 2.5
Caryocar brasiliense 4 13.8 0.7 10.3 1.0 0.1 0.7 2.5
Buchenavia tomentosa 4 13.8 0.7 10.3 1.0 0.1 0.5 2.3
Xylopia aromatica 4 13.8 0.7 13.8 1.4 0.0 0.2 2.3
Magonia pubescens 5 17.2 0.9 6.9 0.7 0.1 0.5 2.1
Ouratea hexasperma 4 13.8 0.7 10.3 1.0 0.1 0.3 2.1
Roupala montana 4 13.8 0.7 10.3 1.0 0.1 0.4 2.1
Andira cuiabensis 3 10.3 0.6 6.9 0.7 0.1 0.8 2.0
Byrsonima basiloba 2 6.9 0.4 6.9 0.7 0.2 0.8 1.9
Kielmeyera coriacea 3 10.3 0.6 10.3 1.0 0.1 0.3 1.9
Indeterminada 1 3 10.3 0.6 3.4 0.3 0.1 0.8 1.7
Schefflera macrocarpa 2 6.9 0.4 6.9 0.7 0.1 0.6 1.6
Vatairea macrocarpa 2 6.9 0.4 6.9 0.7 0.1 0.4 1.4
Erythroxylum suberosum 2 6.9 0.4 6.9 0.7 0.0 0.2 1.3
Syagrus flexuosa 2 6.9 0.4 6.9 0.7 0.0 0.2 1.3
Bauhinia rufa 2 6.9 0.4 6.9 0.7 0.0 0.1 1.2
Couepia grandiflora 2 6.9 0.4 3.4 0.3 0.1 0.5 1.2
Eugenia punicifolia 2 6.9 0.4 6.9 0.7 0.0 0.1 1.2
Ouratea spectabilis 2 6.9 0.4 6.9 0.7 0.0 0.1 1.2
Eugenia aurata 2 6.9 0.4 3.4 0.3 0.0 0.3 1.0
Calliandra sp1 2 6.9 0.4 3.4 0.3 0.0 0.1 0.8
Indeterminada 2 1 3.4 0.2 3.4 0.3 0.1 0.3 0.8
Dipteryx alata 1 3.4 0.2 3.4 0.3 0.0 0.2 0.7
Himenaea courbaril 1 3.4 0.2 3.4 0.3 0.0 0.1 0.7
Casearia sylvestris 1 3.4 0.2 3.4 0.3 0.0 0.0 0.6
Rhamnidium elaeocarpum 1 3.4 0.2 3.4 0.3 0.0 0.0 0.6

Para finalizar, com uma abordagem mas sofisticada, vamos representar graficamente os resultados obtidos para as principais espécies.

library(dplyr)
library(tidyr)
library(forcats)
library(ggplot2)

# Quantidade de especies a serem mostradas no grafico
n_sp_plot <- 10

tabela_fito_long <- tabela_fito %>%
  mutate(Especie = fct_reorder(Especie, IVI)) %>% 
  select(Especie, DR, FR, DoR) %>% 
  filter(Especie != 'NI') %>% 
  filter(row_number() <= n_sp_plot) %>%
  pivot_longer(2:4, names_to = 'par', values_to = 'val')

# Plotar grafico
tabela_fito_long %>% 
  group_by(Especie) %>% 
  mutate(par = fct_reorder(par, c('DR', 'FR', 'DoR')),
         IVI = if_else(par=='DoR', sum(val), NA_real_)) %>% 
  arrange(desc(par)) %>% 
  mutate(lab_y = cumsum(val)) %>% 
  ggplot(aes(x = Especie, fill = par))+
  geom_bar(aes(y = val), stat = 'identity')+
  geom_text(aes(y = lab_y, label = paste0(round(val), '%')), hjust = 1, nudge_y = -.2)+
  geom_text(aes(y = IVI, label = paste0(round(IVI), '%')), fontface = 'bold', hjust = 0, nudge_y = .2)+
  coord_flip()+
  scale_y_continuous(expand=c(0,0), limits = function(x){c(0,max(x)*1.1)})+
  scale_fill_brewer(name = 'Parâmetro', palette = 'Set2')+
  labs(title = 'Valor de Importância de espécies na área de estudo',
       subtitle = paste0(n_sp_plot, ' espécies mais importantes'))+
  theme_minimal()+
  theme(axis.title = element_blank(),
        axis.line.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_text(face = 'italic'),
        plot.title.position = 'plot')
## Warning: Removed 20 rows containing missing values (`geom_text()`).

Avatar
Sérgio Costa
MSc. Engenheiro Florestal

Mestre em Engenharia Florestal pela Universidade Federal do Paraná, atualmente trabalha como Especialista em Modelagem de Dados na Arauco Forest Brasil.

Próximo
Anterior