Relatório da Atividade 12
Este relatório tem como objetivo expor a solução das questões componentes da Atividade 12 da disciplina de Computação para Análise de Dados do Programa de Pós-Graduação em Informática Aplicada da Universidade Federal Rural de Pernambuco (UFRPE).
Questão 1
Use os dados abaixo para gerar os gráficos em anexo. Para o segundográfico (barras), use a escala logarítmica (log = “y”) e as seguintes cores:“#E6E6E6”, “#666666”. Além disso, os gráficos podem ser organizados coma função layout(). Ver exemplos do uso da função layout() em: https://stackoverflow.com/questions/38810854/how-to-use-layout-function-in-r e https://bookdown.org/ndphillips/YaRrr/arranging-plots-with-parmfrow-and-layout.html
# Dados
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)
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)
# Gráfico de linhas
plot(clock, MRT_1F, type="o", ylim=c(0, 550), xlab="Time between Things requests (seconds)", ylab="Response Time (sec.)", col="black", pch=4)
lines(clock, MRT_3F, type="o", col="gold", pch=8)
lines(clock, MRT_5F, type="o", col="red", pch=1)
lines(clock, MRT_10F, type="o", col="blue", pch=2)
lines(clock, MRT_15F, type="o", col="purple", pch=5)
lines(clock, MRT_sem_F, type="o", col="green", pch=6)
legend("topright", legend=c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog"),
col=c("black", "gold", "red", "blue", "purple", "green"),
pch=c(4, 8, 1, 2, 5, 6), bty="n")# Graficos de barras
cores <- c("#E6E6E6", "#666666")
layout(matrix(1:6, nrow=2, byrow=TRUE))
bp <- barplot(rbind(MRT_sem_F, MRT_1F), beside=TRUE, log="y", col=cores,
names.arg=clock, ylab="Response time (s)", xlab="Time between Things requests")
legend(x=max(bp)*0.6, y=max(c(MRT_sem_F, MRT_1F)), legend=c("w/o Fog", "1 Fog"), fill=cores, bty="o")
bp <- barplot(rbind(MRT_sem_F, MRT_3F), beside=TRUE, log="y", col=cores,
names.arg=clock, ylab="Response time (s)", xlab="Time between Things requests")
legend(x=max(bp)*0.6, y=max(c(MRT_sem_F, MRT_1F))*0.3, legend=c("w/o Fog", "3 Fogs"), fill=cores, bty="o")
bp <- barplot(rbind(MRT_sem_F, MRT_5F), beside=TRUE, log="y", col=cores,
names.arg=clock, ylab="Response time (s)", xlab="Time between Things requests")
legend(x=max(bp)*0.6, y=max(c(MRT_sem_F, MRT_1F))*0.15, legend=c("w/o Fog", "5 Fogs"), fill=cores, bty="o")
bp <- barplot(rbind(MRT_sem_F, MRT_10F), beside=TRUE, log="y", col=cores,
names.arg=clock, ylab="Response time (s)", xlab="Time between Things requests")
legend(x=max(bp)*0.6, y=max(c(MRT_sem_F, MRT_1F))*0.05, legend=c("w/o Fog", "10 Fogs"), fill=cores, bty="o")
bp <- barplot(rbind(MRT_sem_F, MRT_15F), beside=TRUE, log="y", col=cores,
names.arg=clock, ylab="Response time (s)", xlab="Time between Things requests")
legend(x=max(bp)*0.6, y=max(c(MRT_sem_F, MRT_1F))*0.02, legend=c("w/o Fog", "15 Fogs"), fill=cores, bty="o")Questão 2
# Dados
dados <- 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, byrow = FALSE)
rownames(dados) <- c("Bom", "Muito Bom", "Excelente")
colnames(dados) <- c("$10-19", "$20-29", "$30-39", "$40-49")
cores <- c("lightblue", "#7394d4", "blue")
# Gráfico de barras
par(mar = c(5, 4, 4, 6), xpd = TRUE)
bp <- barplot(dados,
col = cores,
beside = FALSE,
args.legend = list(x = "topright", bty = "o"),
main = "Qualidade da Refeição por Categoria de Preço",
xlab = "Faixa de Preço",
ylab = "Porcentagem",
ylim = c(0, 120))
legend(x = "topright",
inset = c(-0.2, 0), # desloca para fora (direita)
legend = rownames(dados),
fill = cores,
bty = "o")Questão 3
# Dados
data("airquality")
maio <- subset(airquality, Month == 5)
temp_celsius <- (maio$Temp - 32) / 1.8
# Histograma
hist(temp_celsius,
breaks = 10,
freq = FALSE, # Importante para a curva de densidade
col = "skyblue",
main = "Histograma das Temperaturas em Maio (°C)",
xlab = "Temperatura (°C)",
ylab = "Densidade")
# Curva de densidade
lines(density(temp_celsius, na.rm = TRUE), col = "red", lwd = 2)Questão 4
#Dados
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt", header = TRUE)
valores <- sales$SALES
nomes <- sales$COUNTRY
porcentagens <- round(100 * valores / sum(valores), 1)
rotulos <- paste0(porcentagens, "%")
# Gráfico de pizza
cores <- rainbow(length(valores))
pie(valores,
labels = rotulos,
col = cores,
main = "Participação nas Vendas por País")
legend("topright",
legend = nomes,
fill = cores,
title = "Países",
bty = "o")Questão 5
# Dados
data("InsectSprays")
# Boxplot
boxplot(count ~ spray,
data = InsectSprays,
outline = FALSE,
col = "yellow",
main = "Contagem de Insetos por Tipo de Inseticida",
xlab = "Inseticida",
ylab = "Contagem de Insetos")Questão 6
library(stringr)
process_data <- function(file_path) {
data <- read.csv(file_path, stringsAsFactors = FALSE)
data$currentTime <- as.POSIXct(data$currentTime, format="%Y-%m-%d %H:%M:%OS")
time_diff <- difftime(data$currentTime, data$currentTime[1], units = "hours")
data$timeHours <- as.numeric(time_diff)
convert_to_MB <- function(mem_str) {
val <- as.numeric(str_extract(mem_str, "[0-9.]+"))
unit <- str_extract(mem_str, "[A-Za-z]+")
if (unit == "TB") {
val <- val * 1000000
} else if (unit == "GB") {
val <- val * 1024
} else if (unit == "MB") {
val <- val
} else {
val <- NA
}
return(val)
}
data$usedMemoryMB <- sapply(data$usedMemory, convert_to_MB)
return(data)
}
# Dados
files <- c("monitoringCloudData_NONE.csv",
"monitoringCloudData_0.1.csv",
"monitoringCloudData_0.5.csv",
"monitoringCloudData_1.csv")
list_data <- lapply(files, process_data)
titles <- c("Memory Analysis (None Workload)",
"Memory Analysis (Workload of 0.1)",
"Memory Analysis (Workload of 0.5)",
"Memory Analysis (Workload of 1.0)")
layout(matrix(1:4, nrow=2, byrow=TRUE))
# Gráficos
for(i in 1:4) {
data <- list_data[[i]]
plot(data$timeHours, data$usedMemoryMB, type = "l", col = "black",
xlab = "Time (hour)", ylab = "Used Memory (MB)",
main = titles[i])
}Questão 7
# Dados
library(dplyr)
library(readr)
library(stringr)
library(plotly)
netflix <- read_csv("netflix_titles.csv")
netflix_clean <- netflix %>%
filter(!is.na(country)) %>%
filter(!str_detect(country, ","))
top10_paises <- netflix_clean %>%
count(country, name = "total") %>%
arrange(desc(total)) %>%
slice_head(n = 10)
# Gráfico de pizza
plot_ly(top10_paises, labels = ~country, values = ~total, type = "pie") %>%
layout(title = "Top 10 Países com Mais Conteúdo")Questão 8
Questão 9
netflix_decade <- netflix %>%
filter(!is.na(release_year)) %>%
mutate(decade = paste0(floor(release_year / 10) * 10, "s")) %>%
group_by(type, decade) %>%
summarise(total = n(), .groups = "drop")
# Gráfico de linha
plot_ly(netflix_decade, x = ~decade, y = ~total, color = ~type,
colors = c("TV Show" = "#1F77B4", "Movie" = "orange"),
type = 'scatter', mode = 'lines+markers') %>%
layout(title = "Quantidade de Conteúdo por Década",
xaxis = list(title = "Década"),
yaxis = list(title = "Qnd. de Conteúdo"))Questão 10
filmes_generos <- netflix %>%
filter(type == "Movie", release_year > 2000, release_year < 2010) %>%
mutate(genero_original = word(listed_in, 1, sep = ", ")) %>%
filter(genero_original %in% c("Dramas", "Comedies", "Action & Adventure")) %>%
mutate(genero = recode(genero_original,
"Dramas" = "Drama",
"Comedies" = "Comédia",
"Action & Adventure" = "Ação e Aventura"))
filmes_generos$genero <- factor(filmes_generos$genero,
levels = c("Drama", "Ação e Aventura", "Comédia"))
dados_final <- filmes_generos %>%
group_by(release_year, genero) %>%
summarise(titulos = paste(title, collapse = "<br>"),
quantidade = n(),
.groups = "drop")
cores_pt <- c(
"Drama" = "#1f77b4",
"Comédia" = "#2ca02c",
"Ação e Aventura" = "#ff7f0e"
)
plot_ly(dados_final,
x = ~release_year,
y = ~quantidade,
color = ~genero,
colors = cores_pt,
type = 'bar',
text = ~titulos,
hoverinfo = "text+y") %>%
layout(title = "Quantidade de Filmes por Gênero (2000–2010)",
xaxis = list(title = "Ano de Lançamento"),
yaxis = list(title = "Qnt. de Lançamentos"),
barmode = 'group')