Fórmula do Índice de Shannon

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);

(Como Interpretar)

O Índice de Shannon (H’) mede a diversidade produtiva:

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

```