Questão 1

Gráficos

# Dados
MRT_1F <- c(517.1468515630205, 85.13094142168089, 30.333207896694553, 
            12.694776264558937, 3.3041601673945418, 1.1823111717498882, 
            1.1892293502386786)
MRT_3F <- c(156.68929936163462, 11.540837783562276, 0.4512835621696538, 
            0.4509797929766453, 0.4502068233039181, 0.4496185276300172, 
            0.4543157082191288)
MRT_5F <- c(83.90319666471157, 0.3068151086494968, 0.30522314133037304, 
            0.3072588968084928, 0.30655265997285697, 0.3055812715727718, 
            0.3053297166713006)
MRT_10F <- c(29.55430642951759, 0.19832832665772515, 0.1971923924717474, 
             0.19796648905716516, 0.19615594370806338, 0.2034569237883263, 
             0.19617420889447737)
MRT_15F <- c(11.317736530583566, 0.167364215666193, 0.16172168266811013, 
             0.16701085329580515, 0.1598052657153692, 0.1645934043532696, 
             0.16216563797118075)
MRT_sem_F <- c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 
               0.612167181646899, 0.6146761002685637, 0.6095747087200697, 
               0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)

# Layout para 2 gráficos
layout(matrix(c(1, 2), nrow = 1, ncol = 2))

# Gráfico 1: Linhas
plot(clock, MRT_1F, type = "o", col = "black", pch = 16, 
     ylim = c(0, max(MRT_1F)), xlab = "Clock (s)", ylab = "MRT",
     main = "MRT vs Clock")
lines(clock, MRT_3F, type = "o", col = "red", pch = 16)
lines(clock, MRT_5F, type = "o", col = "blue", pch = 16)
lines(clock, MRT_10F, type = "o", col = "green", pch = 16)
lines(clock, MRT_15F, type = "o", col = "purple", pch = 16)
lines(clock, MRT_sem_F, type = "o", col = "orange", pch = 16)
legend("topright", legend = c("1F", "3F", "5F", "10F", "15F", "sem F"),
       col = c("black", "red", "blue", "green", "purple", "orange"), 
       lty = 1, pch = 16, cex = 0.7)

# Gráfico 2: Barras com escala logarítmica
dados_barras <- rbind(MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F)
barplot(dados_barras, beside = TRUE, log = "y", 
        col = c("#E6E6E6", "#666666", "#E6E6E6", "#666666", "#E6E6E6", "#666666"),
        names.arg = clock, xlab = "Clock (s)", ylab = "MRT (log scale)",
        main = "MRT vs Clock (Barras)")
legend("topright", legend = c("1F", "3F", "5F", "10F", "15F", "sem F"),
       fill = c("#E6E6E6", "#666666", "#E6E6E6", "#666666", "#E6E6E6", "#666666"),
       cex = 0.7)

Questão 2

Gráfico de Barras Empilhadas

# Dados da tabela
quality_data <- matrix(c(53.8, 43.6, 2.6,
                         33.9, 54.2, 11.9,
                         2.6, 60.5, 36.8,
                         0.0, 21.4, 78.6), 
                       nrow = 3, ncol = 4)

rownames(quality_data) <- c("Good", "Very Good", "Excellent")
colnames(quality_data) <- c("$10-19", "$20-29", "$30-39", "$40-49")

# Gráfico de barras empilhadas
barplot(quality_data, col = c("#8dd3c7", "#bebada", "#fb8072"),
        main = "Qualidade de Refeição por Categoria de Preço",
        xlab = "Faixa de Preço", ylab = "Porcentagem (%)",
        legend.text = TRUE, args.legend = list(x = "topright", title = "Qualidade"))

Questão 3

Histograma de Temperaturas

# Filtrar dados de maio
dados_maio <- airquality[airquality$Month == 5, ]

# Converter Fahrenheit para Celsius
temp_celsius <- (dados_maio$Temp - 32) / 1.8

# Histograma
hist(temp_celsius, col = "lightblue", border = "white",
     main = "Histograma de Temperaturas em Maio",
     xlab = "Temperatura (°C)", ylab = "Frequência",
     probability = TRUE)

# Adicionar curva de densidade
lines(density(temp_celsius), col = "red", lwd = 2)

Questão 4

Gráfico de Pizza

# DADOS BASEADOS NO LINK
sales <- data.frame(
Country = c("US", "UK", "France", "Poland", "Japan", "China"),
Total = c(340, 290, 510, 820, 120, 780)
)

# Calcular totais por país
vendas_pais <- aggregate(sales$Total, by = list(sales$Country), FUN = sum)
colnames(vendas_pais) <- c("COUNTRY", "SALES")

# Calcular porcentagens
sales$Percentage <- round(sales$Total / sum(sales$Total) * 100, 1)
# Cores para o gráfico
cores <- rainbow(nrow(sales))
# Criar gráfico de pizza
pie(sales$Total,
  labels = paste0(sales$Percentage, "%"),
  col = cores,
  main = "Porcentagem de Vendas por País")

# Adicionar legenda
legend("topright", legend = sales$Country, fill = cores, cex = 0.8)

Questão 5

Boxplot de Insetos

# Carregar dados
data(InsectSprays)

# Boxplot sem outliers
boxplot(count ~ spray, data = InsectSprays, 
        outline = FALSE, col = "yellow",
        main = "Contagem de Insetos por Tipo de Inseticida",
        xlab = "Tipo de Inseticida", ylab = "Contagem de Insetos")

Questão 6

Gráficos de Monitoramento Cloud

# Função para processar dados de monitoramento
processar_dados <- function(arquivo) {
  dados <- read.csv(arquivo)
  
  # Converter currentTime para POSIXct
  dados$currentTime <- as.POSIXct(dados$currentTime)
  
  # Calcular tempo em horas desde o início
  dados$time_hours <- as.numeric(difftime(dados$currentTime, 
                                          min(dados$currentTime), 
                                          units = "hours"))
  
  # Converter usedMemory para MB
  dados$usedMemory_MB <- sapply(dados$usedMemory, function(x) {
    valor <- as.numeric(gsub("[^0-9.]", "", x))
    if (grepl("TB", x)) {
      return(valor * 1000000)
    } else if (grepl("GB", x)) {
      return(valor * 1024)
    } else {
      return(valor)
    }
  })
  
  return(dados)
}

# Processar todos os arquivos
dados_01 <- processar_dados("monitoringCloudData_0.1.csv")
dados_05 <- processar_dados("monitoringCloudData_0.5.csv")
dados_1 <- processar_dados("monitoringCloudData_1.csv")
dados_none <- processar_dados("monitoringCloudData_NONE.csv")

# Layout para 4 gráficos (2x2)
layout(matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2, byrow = TRUE))

# Gráfico 1: 0.1
plot(dados_01$time_hours, dados_01$usedMemory_MB, type = "l", col = "blue",
     main = "Monitoramento 0.1", xlab = "Tempo (horas)", 
     ylab = "Memória Usada (MB)")

# Gráfico 2: 0.5
plot(dados_05$time_hours, dados_05$usedMemory_MB, type = "l", col = "red",
     main = "Monitoramento 0.5", xlab = "Tempo (horas)", 
     ylab = "Memória Usada (MB)")

# Gráfico 3: 1
plot(dados_1$time_hours, dados_1$usedMemory_MB, type = "l", col = "green",
     main = "Monitoramento 1", xlab = "Tempo (horas)", 
     ylab = "Memória Usada (MB)")

# Gráfico 4: NONE
plot(dados_none$time_hours, dados_none$usedMemory_MB, type = "l", col = "purple",
     main = "Monitoramento NONE", xlab = "Tempo (horas)", 
     ylab = "Memória Usada (MB)")

Questão 7

Gráfico de Pizza - Top 10 Países

library(plotly)

# Carregar dados Netflix
netflix <- read.csv("netflix_titles.csv")

# Filtrar apenas países únicos (sem vírgulas)
netflix_single <- netflix[!grepl(",", netflix$country) & !is.na(netflix$country), ]

# Contar conteúdos por país
contagem_paises <- as.data.frame(table(netflix_single$country))
colnames(contagem_paises) <- c("Country", "Count")
contagem_paises <- contagem_paises[order(-contagem_paises$Count), ]

# Top 10 países
top10 <- head(contagem_paises, 10)

# Gráfico de pizza
fig <- plot_ly(top10, labels = ~Country, values = ~Count, type = 'pie')
fig <- fig %>% layout(title = "Top 10 Países com Mais Conteúdo na Netflix")
fig

Questão 8

Tabela - Top 10 Países

library(plotly)

# Usar dados da questão anterior
top10_table <- data.frame(
  País = top10$Country,
  `Total de conteúdos` = top10$Count
)

# Criar tabela com Plotly
fig <- plot_ly(
  type = 'table',
  header = list(
    values = c("País", "Total de conteúdos"),
    align = c('center', 'center'),
    line = list(width = 1, color = 'black'),
    fill = list(color = 'grey'),
    font = list(family = "Arial", size = 14, color = "white")
  ),
  cells = list(
    values = rbind(top10_table$País, top10_table$Total.de.conteúdos),
    align = c('center', 'center'),
    line = list(color = "black", width = 1),
    font = list(family = "Arial", size = 12, color = c("black"))
  ))

fig

Questão 9

Gráfico de Linha - Conteúdo por Década

library(plotly)

# Carregar dados Netflix
netflix <- read.csv("netflix_titles.csv")

# Criar coluna de década
netflix$decade <- floor(netflix$release_year / 10) * 10

# Contar por década e tipo
contagem_decada <- aggregate(show_id ~ decade + type, data = netflix, FUN = length)
colnames(contagem_decada) <- c("Decade", "Type", "Count")

# Separar filmes e séries
series <- contagem_decada[contagem_decada$Type == "TV Show", ]
movies <- contagem_decada[contagem_decada$Type == "Movie", ]

# Gráfico de linha
fig <- plot_ly()
fig <- fig %>% add_trace(data = series, x = ~Decade, y = ~Count, 
                         type = 'scatter', mode = 'lines+markers',
                         name = 'Séries', line = list(color = 'blue'))
fig <- fig %>% add_trace(data = movies, x = ~Decade, y = ~Count, 
                         type = 'scatter', mode = 'lines+markers',
                         name = 'Filmes', line = list(color = 'yellow'))
fig <- fig %>% layout(title = "Quantidade de Conteúdo por Década",
                      xaxis = list(title = "Década"),
                      yaxis = list(title = "Quantidade de Conteúdo"))
fig

Questão 10

library(plotly)

# Filtrar filmes entre 2000 e 2010
filmes_filtrados <- netflix[netflix$type == "Movie" & 
                             netflix$release_year >= 2000 & 
                             netflix$release_year <= 2010, ]

# Extrair primeiro gênero
filmes_filtrados$primeiro_genero <- sapply(strsplit(as.character(filmes_filtrados$listed_in), ","), 
                                           function(x) trimws(x[1]))

# Filtrar gêneros específicos
generos_interesse <- c("Dramas", "Action & Adventure", "Comedies")
filmes_generos <- filmes_filtrados[filmes_filtrados$primeiro_genero %in% generos_interesse, ]

# Contar por ano e gênero
contagem <- aggregate(show_id ~ release_year + primeiro_genero, 
                      data = filmes_generos, FUN = length)
colnames(contagem) <- c("Ano", "Genero", "Quantidade")

# Criar gráfico de barras lado a lado
plot_ly(contagem, x = ~Ano, y = ~Quantidade, color = ~Genero, 
        type = 'bar') %>%
  layout(title = "Quantidade de Filmes por Gênero (2000-2010)",
         xaxis = list(title = "Ano"),
         yaxis = list(title = "Quantidade de Filmes"),
         barmode = 'group')