Questão 1
cat("Questão 1: Gráficos de linha com layout() para MRT_1F e MRT_3F\n")
## Questão 1: Gráficos de linha com layout() para MRT_1F e MRT_3F
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)
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)
layout(matrix(1:2, ncol=2))
plot(clock, MRT_1F, type="b", col="blue", main="MRT_1F", xlab="Clock", ylab="Tempo")
plot(clock, MRT_3F, type="b", col="red", main="MRT_3F", xlab="Clock", ylab="Tempo")

Questão 2
cat("Questão 2: Gráfico de barras com escala logarítmica\n")
## Questão 2: Gráfico de barras com escala logarítmica
bar_data <- rbind(MRT_1F, MRT_3F)
barplot(bar_data, beside=TRUE, log="y", col=c("#E6E6E6", "#666666"),
names.arg=clock, main="MRTs com Escala Log", xlab="Clock", ylab="Log Tempo")
legend("topright", legend=c("MRT_1F", "MRT_3F"), fill=c("#E6E6E6", "#666666"))

Questão 3
cat("Questão 3: Gráfico de barras empilhadas com classificação de refeições\n")
## Questão 3: Gráfico de barras empilhadas com classificação de refeições
qualidade <- matrix(c(30, 40, 20, 10, 25, 35), nrow=2, byrow=TRUE)
colnames(qualidade) <- c("Baixo", "Médio", "Alto")
rownames(qualidade) <- c("Categoria A", "Categoria B")
barplot(qualidade, main="Qualidade da Refeição por Preço",
col=c("skyblue", "orange"), legend=rownames(qualidade),
xlab="Qualidade", ylab="Frequência")

Questão 4
cat("Questão 4: Histograma das temperaturas em °C com curva de densidade\n")
## Questão 4: Histograma das temperaturas em °C com curva de densidade
data(airquality)
airquality_maio <- subset(airquality, Month == 5)
airquality_maio$TempC <- (airquality_maio$Temp - 32) / 1.8
hist(airquality_maio$TempC, probability=TRUE, col="lightblue",
main="Temperaturas em Maio (°C)", xlab="Temperatura (°C)", ylab="Densidade")
lines(density(airquality_maio$TempC, na.rm=TRUE), col="darkblue", lwd=2)

Questão 5
cat("Questão 5: Gráfico de pizza com verificação de dados\n")
## Questão 5: Gráfico de pizza com verificação de dados
sales <- tryCatch({
read.table("https://training-course-material.com/images/8/8f/Sales.txt", header = TRUE)
}, error = function(e) {
cat("Erro ao carregar os dados de vendas. Verifique o link ou a conexão.\n")
return(data.frame(Country = character(), Sales = numeric()))
})
if (nrow(sales) > 0) {
sales <- sales[!is.na(sales$Sales) & sales$Sales > 0, ]
if (nrow(sales) > 0) {
percent <- round(100 * sales$Sales / sum(sales$Sales), 1)
labels <- paste(sales$Country, "-", percent, "%")
pie(sales$Sales, labels=labels, col=rainbow(length(labels)), main="Vendas por País")
legend("topright", legend=sales$Country, fill=rainbow(length(labels)))
} else {
cat("Aviso: Nenhum valor positivo encontrado em 'sales$Sales'. Gráfico não gerado.\n")
}
} else {
cat("Aviso: Dados de vendas não disponíveis. Gráfico não gerado.\n")
}
## Aviso: Nenhum valor positivo encontrado em 'sales$Sales'. Gráfico não gerado.
Questão 6
cat("Questão 6: Boxplot sem outliers dos inseticidas\n")
## Questão 6: Boxplot sem outliers dos inseticidas
data(InsectSprays)
boxplot(count ~ spray, data=InsectSprays, outline=FALSE, col="yellow",
main="Inseticidas - Contagem de Insetos", xlab="Inseticida", ylab="Contagem")

Questão 7
cat("Questão 7: Pizza Plotly dos 10 países com mais conteúdos da Netflix\n")
## Questão 7: Pizza Plotly dos 10 países com mais conteúdos da Netflix
netflix <- read_csv("netflix_titles.csv")
## Rows: 7787 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (11): show_id, type, title, director, cast, country, date_added, rating,...
## dbl (1): release_year
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df_country <- netflix %>%
filter(!is.na(country) & !str_detect(country, ",")) %>%
group_by(country) %>%
summarise(total = n()) %>%
arrange(desc(total)) %>%
slice_head(n = 10)
plot_ly(df_country, labels = ~country, values = ~total, type = 'pie') %>%
plotly::layout(title = "Top 10 Países com mais Conteúdo na Netflix")
Questão 8
cat("Questão 8: Tabela Plotly com cabeçalho cinza e texto centralizado\n")
## Questão 8: Tabela Plotly com cabeçalho cinza e texto centralizado
plot_ly(
type = 'table',
header = list(
values = c("País", "Total de Conteúdos"),
align = 'center',
line = list(width = 1, color = 'black'),
fill = list(color = "gray"),
font = list(color = "white", size = 14)
),
cells = list(
values = list(df_country$country, df_country$total),
align = 'center',
fill = list(color = c("white", "lightgray")),
font = list(size = 12)
)
)
Questão 9
cat("Questão 9: Gráfico de linha por década - séries e filmes\n")
## Questão 9: Gráfico de linha por década - séries e filmes
netflix_decada <- netflix %>%
filter(!is.na(release_year)) %>%
mutate(decada = paste0(substr(release_year, 1, 3), "0")) %>%
group_by(decada, type) %>%
summarise(total = n(), .groups = "drop")
plot_ly(netflix_decada, x = ~decada, y = ~total, color = ~type,
type = 'scatter', mode = 'lines+markers') %>%
plotly::layout(title = "Conteúdos por Década",
xaxis = list(title = "Década"),
yaxis = list(title = "Quantidade"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
Questão 10
cat("Questão 10: Barras por gênero (2000–2010)\n")
## Questão 10: Barras por gênero (2000–2010)
netflix_genero <- netflix %>%
filter(type == "Movie", release_year >= 2000, release_year <= 2010) %>%
mutate(genero = str_trim(sapply(strsplit(as.character(listed_in), ","), `[`, 1))) %>%
filter(genero %in% c("Dramas", "Action & Adventure", "Comedies")) %>%
group_by(release_year, genero) %>%
summarise(total = n(), .groups = "drop")
plot_ly(netflix_genero, x = ~release_year, y = ~total, color = ~genero, type = 'bar') %>%
plotly::layout(barmode = 'group',
title = "Filmes por Gênero (2000–2010)",
xaxis = list(title = "Ano"),
yaxis = list(title = "Quantidade"))