Gráficos

USArrests

dados <- USArrests
dados$City <- rownames(dados)

# Ordenar de forma decrescente
dados <- dados[order(dados$Murder, decreasing = TRUE), ]
top5 <- head(dados, 5)

plot_ly(data = top5, x = ~City) %>%
  add_bars(y = ~Murder, name = "Murder",
           marker = list(color = "blue")) %>%
  add_bars(y = ~Rape, name = "Rape",
           marker = list(color = "orange")) %>%
  add_bars(y = ~Assault, name = "Assault",
           marker = list(color = "green")) %>%
  layout(
    title = list(text = "5 estados mais violentos (EUA, 1973)", x = 0.5),
    barmode = "group",
    xaxis = list(
      title = "Estado",
      categoryorder = "array",
      categoryarray = top5$City,
      showgrid = FALSE,
      zeroline = FALSE
    ),
    yaxis = list(
      title = "Ocorrências",
      range = c(0, 350),
      tickvals = c(0, 100, 200, 300),
      gridcolor = "white",
      zerolinecolor = "gray"
    ),
    legend = list(x = 1.02, y = 1, traceorder = "normal"),
    plot_bgcolor = "white",
    paper_bgcolor = "white",
    font = list(family = "Arial", color = "gray"),
    margin = list(t = 70, b = 70, l = 70, r = 100)
  )

ClassificaçãoDoença

# 20 pacientes conforme descrito no enunciado
estagios <- c(
  "moderado", "leve", "leve", "severo", "leve",
  "moderado", "moderado", "moderado",
  "leve", "leve", "severo", "leve", "moderado",
  "moderado", "leve", "severo", "moderado",
  "moderado", "moderado", "leve"
)

# Fixar a ordem das categorias
estagios <- factor(estagios, levels = c("leve", "moderado", "severo"))

# Calcular as frequências e porcentagens
frequencias <- table(estagios)
porcentagens <- 100 * frequencias / sum(frequencias)

rotulos <- paste0(
  names(frequencias), " (",
  formatC(as.numeric(porcentagens), format = "f", digits = 0),
  "%)"
)

cores <- c("blue", "yellow", "pink")

parametros <- par(mar = c(4, 1, 3, 1))

pie(
  frequencias,
  labels = rotulos,
  col = cores,
  main = "Classificação dos estágios da doença",
  border = "white",
  clockwise = FALSE,
  init.angle = 90
)

legend(
  "bottom",
  legend = names(frequencias),
  fill = cores,
  title = "Estágio da doença",
  horiz = TRUE,
  bty = "n",
  inset = -0.12,
  xpd = TRUE
)

Orange

dados_orange <- datasets::Orange

# Identificar cada árvore como uma categoria
dados_orange$Tree <- factor(dados_orange$Tree, levels = as.character(1:5))

# Ordenar as observações
dados_orange <- dados_orange[order(dados_orange$Tree, dados_orange$age), ]

plot_ly(
  data = dados_orange,
  x = ~age,
  y = ~circumference,
  color = ~Tree,
  split = ~Tree,
  colors = c("blue", "yellow", "green", "pink", "orange"),
  type = "scatter",
  mode = "lines+markers",
  text = ~paste0(
    "Árvore ", Tree,
    " — idade: ", age, " dias",
    " — circ.: ", circumference, " mm."
  ),
  hovertemplate = "%{text}<extra></extra>"
) %>%
  layout(
    title = "Crescimento das cinco laranjeiras",
    xaxis = list(title = "Idade (dias)"),
    yaxis = list(title = "Circunferência (mm)"),
    legend = list(title = list(text = "Árvore"))
  )

VADeaths

dados_vadeaths <- t(datasets::VADeaths)

cores_vadeaths <- c("blue", "orange", "green", "purple")
grupos_vadeaths <- c(
  "Homens rurais", "Mulheres rurais",
  "Homens urbanos", "Mulheres urbanas"
)

barplot(
  dados_vadeaths,
  beside = TRUE,
  col = cores_vadeaths,
  border = "white",
  names.arg = colnames(dados_vadeaths),
  main = "Taxas de mortalidade na Virgínia (1940)",
  xlab = "Faixa etária (anos)",
  ylab = "Óbitos por 1.000 habitantes por ano",
  ylim = c(0, max(dados_vadeaths) * 1.4),
  las = 1,
  legend.text = grupos_vadeaths,
  args.legend = list(
    x = "topleft",
    ncol = 2,
    bty = "n",
    cex = 0.85
  )
)