Gráficos

# Dados das questões 1 e 2 (compartilhados)
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.6096747087200697, 0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)

Questão 1

# Gráfico de linhas
series <- list("1F" = MRT_1F, "3F" = MRT_3F, "5F" = MRT_5F,
               "10F" = MRT_10F, "15F" = MRT_15F, "Sem F" = MRT_sem_F)
cores  <- c("black", "red", "blue", "darkgreen", "orange", "purple")

# layout()
graphics::layout(matrix(c(1, 2), nrow = 1), widths = c(4, 1))

par(mar = c(5, 4.5, 4, 1))
plot(clock, MRT_1F, type = "n", ylim = range(unlist(series)),
     xlab = "Clock", ylab = "MRT",
     main = "MRT em função do clock para cada configuração")
for (i in seq_along(series)) {
  lines(clock, series[[i]], type = "b", col = cores[i], pch = i, lwd = 2)
}
grid()

par(mar = c(5, 0, 4, 0))
plot.new()
legend("center", legend = names(series), col = cores, pch = seq_along(series),
       lwd = 2, title = "Configuração", bty = "n")

graphics::layout(1)   # volta ao layout padrão

Questão 2

# Gráfico de barras com escala logarítmica no eixo y
# Comparação entre duas configurações
mat <- rbind("Sem F" = MRT_sem_F, "1F" = MRT_1F)
colnames(mat) <- clock

barplot(mat, beside = TRUE, log = "y",
        col = c("#E6E6E6", "#666666"),
        xlab = "Clock", ylab = "MRT (escala log)",
        main = "MRT por clock (escala logarítmica)",
        legend.text = rownames(mat),
        args.legend = list(x = "topright", bty = "n"))

Questão 3

# Tabela da imagem: qualidade da refeição por faixa de preço
tab <- matrix(c(53.8, 33.9,  2.6,  0.0,
                43.6, 54.2, 60.5, 21.4,
                 2.6, 11.9, 36.8, 78.6),
              nrow = 3, byrow = TRUE,
              dimnames = list(c("Good", "Very Good", "Excellent"),
                              c("$10-19", "$20-29", "$30-39", "$40-49")))

barplot(tab, col = c("#fdd0a2", "#fd8d3c", "#a63603"),
        main = "Qualidade da refeição por faixa de preço",
        xlab = "Preço da refeição", ylab = "Percentual (%)",
        ylim = c(0, 100),
        legend.text = rownames(tab),
        args.legend = list(title = "Qualidade", x = "topright",
                           bty = "n", inset = c(-0.02, -0.02)))

Questão 4

# Temperaturas de maio, convertidas de °F para °C
maio    <- subset(airquality, Month == 5)
temp_c  <- (maio$Temp - 32) / 1.8

hist(temp_c, freq = FALSE, col = "lightblue", border = "white",
     main = "Histograma das temperaturas de maio (airquality)",
     xlab = "Temperatura (°C)", ylab = "Densidade")
lines(density(temp_c), col = "red", lwd = 2)

Questão 6

# 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 7

dir_dados <- "C:/Users/Pichau/Desktop/CPAD"

netflix <- read.csv(file.path(dir_dados, "netflix_titles.csv"),
                    stringsAsFactors = FALSE, fileEncoding = "UTF-8")

# Conteúdos com só um país de origem
# (valores como "United States," também têm vírgula, ou seja, havia mais de um país listado, então ficam de fora)
um_pais <- subset(netflix, trimws(country) != "" & !grepl(",", country))

# Contagem por país e seleção dos 10 maiores
# Desempate alfabético
contagem <- as.data.frame(table(pais = um_pais$country),
                          stringsAsFactors = FALSE)
names(contagem) <- c("pais", "total")
contagem <- contagem[order(-contagem$total, contagem$pais), ]
top10    <- head(contagem, 10)

# Gráfico de pizza dos 10 países com mais conteúdo
plot_ly(top10, labels = ~pais, values = ~total, type = "pie",
        textinfo = "label+percent", sort = FALSE) %>%
  plotly::layout(title = "Top 10 países com mais conteúdo na Netflix")

Questão 8

# Tabela
plot_ly(
  type = "table",
  header = list(
    values = c("País", "Total de conteúdos"),
    align  = "center",
    fill   = list(color = "gray"),
    font   = list(color = "white", size = 14)
  ),
  cells = list(
    values = list(top10$pais, top10$total),
    align  = "center",
    font   = list(size = 13)
  )
)

Questão 9

# Década = XXX0 a XXX9
netflix$decada <- (netflix$release_year %/% 10) * 10
decadas <- seq(min(netflix$decada), max(netflix$decada), by = 10)

# Quantidade por década e tipo (década sem conteúdo fica com 0)
cont_dec <- table(factor(netflix$decada, levels = decadas), netflix$type)
dec_df <- data.frame(decada = decadas,
                     series = as.numeric(cont_dec[, "TV Show"]),
                     filmes = as.numeric(cont_dec[, "Movie"]))

plot_ly(dec_df, x = ~decada) %>%
  add_trace(y = ~series, name = "Séries", type = "scatter",
            mode = "lines+markers",
            line = list(color = "blue"), marker = list(color = "blue")) %>%
  add_trace(y = ~filmes, name = "Filmes", type = "scatter",
            mode = "lines+markers",
            line = list(color = "#FFD700"), marker = list(color = "#FFD700")) %>%
  plotly::layout(title = "Quantidade de conteúdo por década de lançamento",
                 xaxis = list(title = "Década", tickvals = decadas),
                 yaxis = list(title = "Quantidade de conteúdo"))

Questão 10

# Filmes lançados entre 2000 e 2010 
# Só o 1º gênero de "listed_in"
filmes <- subset(netflix, type == "Movie" &
                          release_year >= 2000 & release_year <= 2010)
filmes$genero <- trimws(sub(",.*$", "", filmes$listed_in))

generos <- c("Dramas", "Action & Adventure", "Comedies")
filmes  <- subset(filmes, genero %in% generos)

# Quantidade por ano e gênero (combinação sem filmes fica com 0)
cont_gen <- as.data.frame(
  table(ano    = factor(filmes$release_year, levels = 2000:2010),
        genero = factor(filmes$genero, levels = generos)),
  stringsAsFactors = FALSE)

plot_ly(cont_gen, x = ~ano, y = ~Freq, color = ~genero, type = "bar") %>%
  plotly::layout(barmode = "group",
                 title = "Filmes lançados por gênero (2000 a 2010)",
                 xaxis = list(title = "Ano de lançamento"),
                 yaxis = list(title = "Quantidade de filmes"),
                 legend = list(title = list(text = "Gênero")))