USArrests

library(plotly)
library(dplyr)
library(tidyr)

data("USArrests")

# Cria a coluna City usando os nomes originais das linhas
dados_crimes <- USArrests %>%
  mutate(City = rownames(USArrests))

# Ordena por Murder e seleciona os 5 maiores valores
top5_crimes <- dados_crimes %>%
  arrange(desc(Murder)) %>%
  slice_head(n = 5)

# Mantém a ordem dos estados no eixo x conforme o ranking
top5_crimes$City <- factor(top5_crimes$City, levels = top5_crimes$City)

# Transforma as colunas de crimes em uma estrutura adequada para barras agrupadas
dados_longos <- top5_crimes %>%
  select(City, Murder, Rape, Assault) %>%
  pivot_longer(
    cols = c(Murder, Rape, Assault),
    names_to = "Tipo",
    values_to = "Valor"
  )

grafico_crimes <- plot_ly(
  data = dados_longos,
  x = ~City,
  y = ~Valor,
  color = ~Tipo,
  type = "bar",
  colors = c("#3B82F6", "#EF4444", "#22C55E"),
  text = ~paste(
    "Estado:", City,
    "<br>Indicador:", Tipo,
    "<br>Valor:", Valor
  ),
  hoverinfo = "text"
) %>%
  layout(
    title = "Top 5 estados com maiores valores de Murder",
    xaxis = list(title = "Estado"),
    yaxis = list(title = "Valor registrado"),
    barmode = "group",
    legend = list(title = list(text = "Variável"))
  )

grafico_crimes