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