Questão 1
Carregando os 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.6096747087200697, 0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)
Gráfico de Linhas
# Ajuste de margens
par(mar = c(5, 5, 4, 2) + 0.1)
# Criar o gráfico de linha
plot(clock, MRT_1F,
type = "b",
col = "black",
pch = 4,
ylim = c(0, 520),
xlab = "Time between Things requests (seconds)",
ylab = "Response Time (sec.)",
main = "")
# Adicionar as linhas
lines(clock, MRT_3F, type = "b", col = "goldenrod1", pch = 3)
lines(clock, MRT_5F, type = "b", col = "red", pch = 2)
lines(clock, MRT_10F, type = "b", col = "blue", pch = 1)
lines(clock, MRT_15F, type = "b", col = "purple", pch = 8)
lines(clock, MRT_sem_F, type = "b", col = "green", pch = 6)
# Legenda
legend("topright",
legend = c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog"),
col = c("black", "goldenrod1", "red", "blue", "purple", "green"),
lty = 1,
pch = c(4, 3, 2, 1, 8, 6),
cex = 0.8)

Gráfico de Barras
par(mar=c(5,4,2,1))
layout(matrix(1:6, nrow=3, byrow=TRUE))
barplot(rbind(MRT_sem_F, MRT_1F), beside=TRUE, names.arg=clock, log="y",
col=c("#E6E6E6","#666666"),
xlab="Time between Things requests (seconds)", ylab="Response time (s)")
legend("topright", legend=c("w/o Fog","1 Fog"), fill=c("#E6E6E6","#666666"))
barplot(rbind(MRT_sem_F, MRT_3F), beside=TRUE, names.arg=clock, log="y",
col=c("#E6E6E6","#666666"),
xlab="Time between Things requests (seconds)", ylab="Response time (s)")
legend("topright", legend=c("w/o Fog","3 Fogs"), fill=c("#E6E6E6","#666666"))
barplot(rbind(MRT_sem_F, MRT_5F), beside=TRUE, names.arg=clock, log="y",
col=c("#E6E6E6","#666666"),
xlab="Time between Things requests (seconds)", ylab="Response time (s)")
legend("topright", legend=c("w/o Fog","5 Fogs"), fill=c("#E6E6E6","#666666"))
barplot(rbind(MRT_sem_F, MRT_10F), beside=TRUE, names.arg=clock, log="y",
col=c("#E6E6E6","#666666"),
xlab="Time between Things requests (seconds)", ylab="Response time (s)")
legend("topright", legend=c("w/o Fog","10 Fogs"), fill=c("#E6E6E6","#666666"))
barplot(rbind(MRT_sem_F, MRT_15F), beside=TRUE, names.arg=clock, log="y",
col=c("#E6E6E6","#666666"),
xlab="Time between Things requests (seconds)", ylab="Response time (s)")
legend("topright", legend=c("w/o Fog","15 Fogs"), fill=c("#E6E6E6","#666666"))

Questão 2
Carregando os dados
# Criando o data frame com base na tabela
quality_data <- data.frame(
Quality = c("Good", "Very Good", "Excellent"),
`10-19` = c(53.8, 43.6, 2.6),
`20-29` = c(33.9, 54.2, 11.9),
`30-39` = c(2.6, 60.5, 36.8),
`40-49` = c(0.0, 21.4, 78.6)
)
Gráfico de Barras
# Transpor os dados para que as faixas de preço fiquem nas colunas
quality_matrix <- as.matrix(quality_data[, -1])
rownames(quality_matrix) <- quality_data$Quality
colors <- c("#FF9999", "#66B2FF", "#99FF99")
# Criar gráfico de barras
barplot(quality_matrix,
beside = TRUE,
col = colors,
ylim = c(0, 100),
xlab = "Faixa de Preço da Refeição (US$)",
ylab = "Percentual (%)",
main = "Distribuição da Qualidade da Refeição por Faixa de Preço")
# Adicionar legenda
legend("top", inset = c(0, 0.03),
legend = rownames(quality_matrix),
fill = colors,
title = "Qualidade da refeição",
horiz = TRUE,
bty = "n",
cex = 0.9)

Questão 6
# Função auxiliar para converter memória em MB
converter_para_MB <- function(valor) {
valor <- trimws(valor)
valor <- gsub(",", ".", valor)
if (grepl("TB", valor, ignore.case = TRUE)) {
return(as.numeric(gsub("[^0-9.]", "", valor)) * 1000000)
} else if (grepl("GB", valor, ignore.case = TRUE)) {
return(as.numeric(gsub("[^0-9.]", "", valor)) * 1024)
} else if (grepl("MB", valor, ignore.case = TRUE)) {
return(as.numeric(gsub("[^0-9.]", "", valor)))
} else if (grepl("KB", valor, ignore.case = TRUE)) {
return(as.numeric(gsub("[^0-9.]", "", valor)) / 1024)
} else {
return(as.numeric(valor))
}
}
# Função para processar cada CSV
processar_dados <- function(arquivo) {
dados <- read.csv(arquivo, header = TRUE, sep = ",", stringsAsFactors = FALSE)
# Converter tempo em horas contínuas
dados$currentTime <- as.POSIXct(dados$currentTime, format="%Y-%m-%d %H:%M:%S")
tempo_inicial <- min(dados$currentTime, na.rm = TRUE)
dados$tempo_horas <- as.numeric(difftime(dados$currentTime, tempo_inicial, units = "hours"))
# Converter memória para MB
dados$usedMemory <- sapply(dados$usedMemory, converter_para_MB)
return(dados)
}
# Ler e processar os 4 arquivos
dados_none <- processar_dados("C:/Users/danta/OneDrive/Documentos/monitoringCloudData_NONE.csv")
dados_01 <- processar_dados("C:/Users/danta/OneDrive/Documentos/monitoringCloudData_0.1.csv")
dados_05 <- processar_dados("C:/Users/danta/OneDrive/Documentos/monitoringCloudData_0.5.csv")
dados_1 <- processar_dados("C:/Users/danta/OneDrive/Documentos/monitoringCloudData_1.csv")
# Configuração do layout (2x2)
layout(matrix(1:4, nrow = 2, byrow = TRUE))
# Gráficos de linha
plot(dados_none$tempo_horas, dados_none$usedMemory, type="l",
main="Memory Analysis (None Workload)",
xlab="Time (hour)", ylab="Used Memory (MB)")
plot(dados_01$tempo_horas, dados_01$usedMemory, type="l",
main="Memory Analysis (Workload of 0.1)",
xlab="Time (hour)", ylab="Used Memory (MB)")
plot(dados_05$tempo_horas, dados_05$usedMemory, type="l",
main="Memory Analysis (Workload of 0.5)",
xlab="Time (hour)", ylab="Used Memory (MB)")
plot(dados_1$tempo_horas, dados_1$usedMemory, type="l",
main="Memory Analysis (Workload of 1.0)",
xlab="Time (hour)", ylab="Used Memory (MB)")

Questão 7
# Carregar os pacotes necessários
library(dplyr)
library(plotly)
# 1. Carregar os dados
netflix <- read.csv("C:/Users/danta/OneDrive/Documentos/netflix_titles.csv", stringsAsFactors = FALSE)
# Filtrar apenas os conteúdos com apenas um país de origem
netflix_filtrado <- netflix %>%
filter(!is.na(country)) %>%
mutate(n_paises = sapply(strsplit(country, ","), length)) %>%
filter(n_paises == 1)
# Agrupar por país e obter os 10 países com mais conteúdo
top10 <- netflix_filtrado %>%
group_by(country) %>%
summarise(contagem = n()) %>%
arrange(desc(contagem)) %>%
slice_head(n = 10)
# Preparar os dados para o gráfico de pizza
top10 <- top10 %>%
mutate(pct = round(100 * contagem / sum(contagem), 1),
label = paste(country, pct, "%"))
#Criar o gráfico de pizza
plot_ly(top10,
labels = ~country,
values = ~contagem,
type = "pie",
textinfo = "percent",
insidetextorientation = 'radial') %>%
layout(title = "Top 10 Países com mais conteúdos na Netflix")
Questão 8
# Criar tabela
fig <- plot_ly(
type = 'table',
header = list(
values = c("<b>País</b>", "<b>Total de Conteúdos</b>"),
align = c('center', 'center'),
line = list(width = 1, color = 'black'),
fill = list(color = 'pink'),
font = list(color = 'black', size = 14)
),
cells = list(
values = list(top10$country, top10$contagem),
align = c('center', 'center'),
line = list(width = 1, color = 'black'),
fill = list(color = 'white'),
font = list(color = 'black', size = 12)
)
)
fig <- fig %>% layout(title = "Top 10 Países com mais conteúdos na Netflix")
fig
Questão 9
library(dplyr)
library(plotly)
# Carregar o dataset
netflix <- read.csv("C:/Users/danta/OneDrive/Documentos/netflix_titles.csv", stringsAsFactors = FALSE)
# Remover registros sem ano de lançamento
netflix <- netflix %>% filter(!is.na(release_year))
# Criar coluna de década
netflix <- netflix %>%
mutate(decada = floor(release_year / 10) * 10)
# Contar quantidade de conteúdos por década e tipo
dados_decada <- netflix %>%
group_by(decada, type) %>%
summarise(qtd_conteudo = n(), .groups = "drop")
# Garantir ordem das décadas
dados_decada <- dados_decada %>% arrange(decada)
dados_decada$type <- factor(dados_decada$type, levels = c("TV Show", "Movie"))
# Criar gráfico de linhas
fig <- plot_ly(dados_decada, x = ~decada, y = ~qtd_conteudo,
color = ~type,
colors = c("blue", "orange"),
type = 'scatter', mode = 'lines+markers') %>%
layout(title = "Quantidade de conteúdos da Netflix por década",
xaxis = list(title = "Década"),
yaxis = list(title = "Qtd. Conteúdo"),
legend = list(title = list(text = "Tipo de Conteúdo"),
traceorder = "normal"))
fig
Questão 10
library(dplyr)
library(plotly)
# Filtrar apenas filmes
filmes <- netflix %>%
filter(type == "Movie", !is.na(listed_in), !is.na(release_year)) %>%
# Extrair o primeiro gênero da lista
mutate(genero = trimws(sub(",.*", "", listed_in))) %>%
# Filtrar anos entre 2000 e 2010
filter(release_year >= 2000 & release_year <= 2010) %>%
# Filtrar apenas os gêneros de interesse
filter(genero %in% c("Dramas", "Action & Adventure", "Comedies"))
# Agrupar e contar lançamentos por ano e gênero
dados_genero <- filmes %>%
group_by(release_year, genero) %>%
summarise(qtd_lancamentos = n(), .groups = "drop")
# Criar gráfico de barras
fig <- plot_ly(dados_genero,
x = ~release_year,
y = ~qtd_lancamentos,
color = ~genero,
colors = c("blue", "orange", "green"),
type = "bar") %>%
layout(barmode = "group",
title = "Quantidade de filmes por gênero (2000–2010)",
xaxis = list(title = "Ano de Lançamento"),
yaxis = list(title = "Qtd. de Lançamentos"),
legend = list(title = list(text = "Gênero")))
fig