O cálculo é feito por: H’ = -Σ(pᵢ * ln(pᵢ)) Onde: pᵢ = proporção da cultura i em relação ao total ln = logaritmo natural
(Dicas Importantes) - Certifique-se de que seus dados estão em unidades consistentes (todos em área ou todos em produção);
Remova valores NA antes do cálculo;
Para análise temporal, calcule o índice para cada ano separadamente.
(Como Interpretar)
O Índice de Shannon (H’) mede a diversidade produtiva:
Valores mais altos indicam maior diversidade agrícola
Valores mais baixos sugerem predominância de monoculturas
Gráfico Interativo
# Carregue seus dados
dados_ibge <- get_sidra(
x = 1612,
variable = 214,
geo = "City",
geo.filter = list(State = 42),
classific = "c81",
category = "all"
)
# Processamento (mesmo código anterior)
dados_processados <- dados_ibge %>%
select(
Municipio_cod = `Município (Código)`,
Municipio_nome = `Município`,
Produto_cod = `Produto das lavouras temporárias (Código)`,
Produto_nome = `Produto das lavouras temporárias`,
Quantidade = Valor
) %>%
drop_na() %>%
group_by(Municipio_cod, Municipio_nome, Produto_nome) %>%
summarise(Quantidade = sum(Quantidade), .groups = "drop") %>%
pivot_wider(
names_from = Produto_nome,
values_from = Quantidade,
values_fill = 0
)
# Cálculo do Índice
dados_matriz <- dados_processados %>%
select(-c(Municipio_cod, Municipio_nome)) %>%
as.matrix()
indices_shannon <- diversity(dados_matriz, index = "shannon")
resultados_finais <- dados_processados %>%
select(Municipio_cod, Municipio_nome) %>%
mutate(Indice_Shannon = indices_shannon) %>%
arrange(desc(Indice_Shannon))
# Gráfico
plot <- resultados_finais %>%
ggplot(aes(x = reorder(Municipio_nome, Indice_Shannon),
y = Indice_Shannon,
text = paste("Município:", Municipio_nome, "<br>Índice:", round(Indice_Shannon, 2)))) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(x = "", y = "Índice de Shannon (H')") +
theme_minimal()
ggplotly(plot, tooltip = "text")
# Gráfico estático
# Ajustar tamanho e proporções
ggplot(resultados_finais, aes(x = reorder(Municipio_nome, Indice_Shannon), y = Indice_Shannon)) +
geom_col(fill = "steelblue", width = 0.8) +
coord_flip() +
labs(x = "", y = "Índice de Shannon (H')") +
theme_minimal() +
theme(
axis.text.y = element_text(size = 7, margin = margin(r = 5)), # Texto menor com margem
plot.margin = margin(1, 1, 1, 2, "cm"), # Margens maiores
panel.grid.major.y = element_blank() # Remove linhas de grade horizontais
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) # Espaço no eixo X
# Para visualizar o dataframe
print(resultados_finais)
## # A tibble: 291 × 3
## Municipio_cod Municipio_nome Indice_Shannon
## <chr> <chr> <dbl>
## 1 4209904 Lontras - SC 1.95
## 2 4200309 Agronômica - SC 1.88
## 3 4207007 Içara - SC 1.81
## 4 4212403 Pedras Grandes - SC 1.76
## 5 4212700 Petrolândia - SC 1.75
## 6 4214805 Rio do Sul - SC 1.74
## 7 4204608 Criciúma - SC 1.71
## 8 4218400 Treze de Maio - SC 1.70
## 9 4201109 Anitápolis - SC 1.69
## 10 4200200 Agrolândia - SC 1.68
## # ℹ 281 more rows
```