1 Questão 1: Gráfico de Linhas e Barras

MRT_1F <- c(517.15, 85.13, 30.33, 12.69, 3.30, 1.18, 1.19)
MRT_3F <- c(156.69, 11.54, 0.45, 0.45, 0.45, 0.45, 0.45)
MRT_5F <- c(83.90, 0.31, 0.31, 0.31, 0.31, 0.31, 0.31)
MRT_10F <- c(29.55, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20)
MRT_15F <- c(11.32, 0.17, 0.16, 0.17, 0.16, 0.16, 0.16)
MRT_sem_F <- c(11.93, 0.61, 0.61, 0.61, 0.61, 0.61, 0.61)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)

dados <- data.frame(clock, MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F)

matplot(dados$clock, dados[, -1], type = "l", lty = 1, col = c("black", "gray", "red", "green", "blue", "purple"),
        xlab = "Clock", ylab = "MRT", main = "MRT por Clock")
legend("topright", legend = colnames(dados)[-1],
       col = c("black", "gray", "red", "green", "blue", "purple"), lty = 1)

barplot(MRT_1F, log = "y", col = "lightblue", main = "MRT_1F (Escala Log)", ylab = "MRT", names.arg = clock)

2 Questão 2: Gráfico de Barras Empilhadas

qualidade_refeicao <- data.frame(
  Preco = c("Baixo", "Médio", "Alto"),
  Ruim = c(10, 20, 5),
  Regular = c(20, 30, 10),
  Bom = c(30, 40, 20),
  Excelente = c(40, 50, 25)
)

df_long <- pivot_longer(qualidade_refeicao, cols = -Preco, names_to = "Qualidade", values_to = "Quantidade")

ggplot(df_long, aes(x = Preco, y = Quantidade, fill = Qualidade)) +
  geom_bar(stat = "identity") +
  labs(title = "Qualidade da Refeição por Preço", x = "Preço", y = "Quantidade") +
  theme_minimal()

3 Questão 3: Histograma Temperatura em Celsius

data("airquality")
airquality <- mutate(airquality, Temp_C = (Temp - 32) / 1.8)

ggplot(airquality, aes(x = Temp_C)) +
  geom_histogram(bins = 10, fill = "steelblue", color = "black") +
  geom_density(aes(y = ..count..), linetype = "dashed", color = "red") +
  labs(title = "Temperaturas em Celsius", x = "°C", y = "Frequência") +
  theme_minimal()
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

4 Questão 4: Gráfico de Pizza - Vendas por País

sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt", header = TRUE)

# Filtrar apenas valores positivos
sales_pos <- sales[sales$Sales > 0, ]

# Verificar se há dados válidos para o gráfico
if (nrow(sales_pos) > 0) {
  pie(sales_pos$Sales,
      labels = paste0(sales_pos$Country, " (", round(prop.table(sales_pos$Sales) * 100, 1), "%)"),
      main = "Porcentagem de Vendas por País",
      col = rainbow(nrow(sales_pos)))
  legend("bottomleft", legend = sales_pos$Country, fill = rainbow(nrow(sales_pos)))
} else {
  cat("Não há dados positivos suficientes para gerar o gráfico de pizza.")
}
## Não há dados positivos suficientes para gerar o gráfico de pizza.

5 Questão 5: Boxplot Inseticidas

data("InsectSprays")

boxplot(count ~ spray, data = InsectSprays, col = "orange",
        main = "Inseticida vs Contagem de Insetos",
        xlab = "Inseticida", ylab = "Contagem", outline = FALSE)

6 Questão 6: Gráficos de Memória Usada

processar_dados <- function(arquivo) {
  tryCatch({
    dados <- read.csv(arquivo)
    dados$currentTime <- as.POSIXct(dados$currentTime, format = "%Y-%m-%d %H:%M:%S")
    dados$usedMemory <- gsub("[^0-9.]", "", dados$usedMemory)
    dados$usedMemory <- as.numeric(dados$usedMemory)
    return(dados)
  }, error = function(e) {
    message(paste("Erro ao carregar:", arquivo))
    return(NULL)
  })
}

# URL base corrigida (branch main)
url_base <- "https://raw.githubusercontent.com/ianlucasalmeida/Meu_RCurso/main/monitoringCloudData/"

# Leitura dos arquivos
d1 <- processar_dados(paste0(url_base, "monitoringCloudData_0.1.csv"))
d2 <- processar_dados(paste0(url_base, "monitoringCloudData_0.5.csv"))
d3 <- processar_dados(paste0(url_base, "monitoringCloudData_1.csv"))
d4 <- processar_dados(paste0(url_base, "monitoringCloudData_NONE.csv"))

# Verifica se os dados foram carregados antes de plotar
if (all(!is.null(d1), !is.null(d2), !is.null(d3), !is.null(d4))) {
  layout(matrix(1:4, ncol = 2))
  plot(d1$currentTime, d1$usedMemory, type = "l", main = "0.1", xlab = "Tempo", ylab = "Memória (MB)")
  plot(d2$currentTime, d2$usedMemory, type = "l", main = "0.5", xlab = "Tempo", ylab = "Memória (MB)")
  plot(d3$currentTime, d3$usedMemory, type = "l", main = "1", xlab = "Tempo", ylab = "Memória (MB)")
  plot(d4$currentTime, d4$usedMemory, type = "l", main = "NONE", xlab = "Tempo", ylab = "Memória (MB)")
} else {
  message("Alguns dados não foram carregados corretamente. Verifique os links.")
}

7 Questão 7: Pizza com Plotly (Netflix - 10 países)

netflix <- read.csv("https://raw.githubusercontent.com/ianlucasalmeida/Meu_RCurso/7386a66da926cb2e051d87128200bbe7b9f07f72/netflix_titles.csv")

top_paises <- netflix %>%
  filter(!is.na(country), !str_detect(country, ",")) %>%
  count(country, sort = TRUE) %>%
  slice_max(n, n = 10)

plot_ly(top_paises, labels = ~country, values = ~n, type = "pie") %>%
  layout(title = "Top 10 Países com Conteúdo na Netflix", showlegend = FALSE)

8 Questão 8: Tabela com Plotly

plot_ly(
  type = 'table',
  header = list(values = c("País", "Total de Títulos"),
                fill = list(color = "lightgrey"),
                align = "center"),
  cells = list(values = list(top_paises$country, top_paises$n),
               fill = list(color = "white"),
               align = "center")
)

9 Questão 9: Tabela Estilizada com Plotly

plot_ly(
  type = 'table',
  header = list(values = c('País', 'Total de Conteúdos'),
                fill = list(color = '#666666'), font = list(color = 'white')),
  cells = list(values = list(top_paises$country, top_paises$n), align = 'center')
) %>%
  layout(title = "Tabela de Países e Conteúdos na Netflix")

10 Questão 10: Filmes por Gênero entre 2000 e 2010

filmes_genero <- netflix %>%
  filter(type == "Movie", release_year >= 2000, release_year <= 2010) %>%
  separate_rows(listed_in, sep = ",") %>%
  mutate(listed_in = trimws(listed_in)) %>%
  filter(listed_in %in% c("Dramas", "Action & Adventure", "Comedies")) %>%
  group_by(release_year, listed_in) %>%
  summarise(total = n(), .groups = "drop")

plot_ly(filmes_genero, x = ~release_year, y = ~total, color = ~listed_in, type = "bar") %>%
  layout(title = "Filmes por Gênero entre 2000 e 2010",
         barmode = "group",
         xaxis = list(title = "Ano"),
         yaxis = list(title = "Quantidade"))