Orange

# Carregando bibliotecas e dataset
library(plotly)
library(dplyr)
data("Orange")

# Visualizando os dados
print(head(Orange, 10))
##    Tree  age circumference
## 1     1  118            30
## 2     1  484            58
## 3     1  664            87
## 4     1 1004           115
## 5     1 1231           120
## 6     1 1372           142
## 7     1 1582           145
## 8     2  118            33
## 9     2  484            69
## 10    2  664           111
# Definindo cores para cada árvore
cores <- c(
  "1" = "#E63946",
  "2" = "#2A9D8F",
  "3" = "#E9C46A",
  "4" = "#457B9D",
  "5" = "#9B5DE5"
)
fig <- plot_ly()

# Adicionando uma linha para cada árvore
for (arvore in unique(Orange$Tree)) {
  
  # Filtrando dados
  dados_arvore <- Orange %>%
    filter(Tree == arvore)
  
  # Criando tooltip 
  tooltip <- paste0(
    "Árvore ", arvore,
    " — idade: ", dados_arvore$age,    " dias",
    " — circ.: ", dados_arvore$circumference, " mm"
  )
  
  # Adicionando linha ao gráfico
  fig <- fig %>%
    add_trace(
      data       = dados_arvore,
      x          = ~age,
      y          = ~circumference,
      type       = "scatter",
      mode       = "lines+markers",
      name       = paste0("Árvore ", arvore),
      text       = tooltip,
      hoverinfo  = "text",
      line       = list(
        color = cores[as.character(arvore)],
        width = 2.5
      ),
      marker     = list(
        color  = cores[as.character(arvore)],
        size   = 8,
        symbol = "circle"
      )
    )
}

# Layout
fig <- fig %>%
  layout(
    title = list(
      text = "<b>Crescimento das Laranjeiras ao Longo do Tempo</b>",
      font = list(size = 18)
    ),
    xaxis = list(
      title      = "Idade (dias)",
      tickfont   = list(size = 12),
      gridcolor  = "#e0e0e0",
      showgrid   = TRUE
    ),
    yaxis = list(
      title      = "Circunferência (mm)",
      tickfont   = list(size = 12),
      gridcolor  = "#e0e0e0",
      showgrid   = TRUE
    ),
    legend = list(
      title       = list(text = "<b>Laranjeiras</b>"),
      orientation = "v",
      x           = 0.02,
      y           = 0.98,
      bgcolor     = "rgba(255,255,255,0.8)",
      bordercolor = "#cccccc",
      borderwidth = 1
    ),
    plot_bgcolor  = "#f9f9f9",
    paper_bgcolor = "#ffffff",
    hovermode     = "closest"
  )
fig