Atividade 12
Questão 1
library(ggplot2)
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)
df <- data.frame(clock, MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F)
# Primeiro gráfico
par(mfrow=c(1,1))
matplot(clock, df[,-1], type='o', pch=1:6, col=1:6, xlab="Time between Things requests (seconds)", ylab="Response Time (sec.)")
legend("topright", legend=colnames(df)[-1], col=1:6, pch=1:6)

# Segundo gráfico
layout(matrix(1:6, nrow=3, byrow=TRUE))
mrt_list <- colnames(df)[2:6]
for (mrt in mrt_list) {
barplot(rbind(df$MRT_sem_F, df[[mrt]]), beside=TRUE, col=c("#E6E6E6", "#666666"), log="y",
names.arg=clock, xlab="Time between Things requests", ylab="MRT")
legend("topright", legend=c(mrt, "MRT_sem_F"), fill=c("#666666", "#E6E6E6"))
}

Questão 2
data <- data.frame(
Preço = rep(c("$10–19", "$20–29", "$30–39", "$40–49"), each=3),
Qualidade = rep(c("Good", "Very Good", "Excellent"), times=4),
Frequência = 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)
)
ggplot(data, aes(x=Preço, y=Frequência, fill=Qualidade)) +
geom_bar(stat="identity") +
labs(title="Qualidade de Refeição por Faixa de Preço") +
theme_minimal()

Questão 3
data(airquality)
airquality$Temp_C <- (airquality$Temp - 32) / 1.8
hist(airquality$Temp_C, breaks=10, col="lightblue", main="Histograma das Temperaturas em Maio", xlab="Temperatura (°C)", ylab="Distribuição", prob=TRUE)
density_data <- density(airquality$Temp_C)
lines(density_data, col="red")

Questão 4
# Carregar o dataset
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt", header=TRUE)
# Calcular o total de vendas por país
country_sales <- aggregate(SALES ~ COUNTRY, data = sales, sum)
# Calcular a porcentagem de cada país
country_sales$percentage <- (country_sales$SALES / sum(country_sales$SALES)) * 100
# Definir as cores para as fatias
colors <- rainbow(nrow(country_sales))
# Criar o gráfico de pizza
pie(country_sales$SALES, labels = paste(country_sales$COUNTRY, "\n", round(country_sales$percentage, 1), "%"), col = colors,
main = "Porcentagem das Vendas por País")
# Adicionar a legenda
legend("topright", legend = country_sales$COUNTRY, fill = colors, title = "País")

Questão 5
data(InsectSprays)
ggplot(InsectSprays, aes(x=spray, y=count, fill=spray)) +
geom_boxplot(outlier.shape=NA, fill="yellow") +
labs(
title = "Contagem de Insetos por Inseticida",
x = "Tipo de Inseticida",
y = "Contagem de Insetos"
)

Questão 6
# Carregar pacotes necessários
# Carregar pacotes necessários
library(ggplot2)
# Função para ajustar e processar os dados
adjust_data <- function(file) {
data <- read.csv(file)
# Ajustar a coluna currentTime para formato de tempo
data$currentTime <- as.POSIXct(data$currentTime, format="%Y-%m-%d %H:%M:%S")
# Calcular a diferença de tempo em horas
data$timeDiff <- as.numeric(difftime(data$currentTime, min(data$currentTime), units="hours"))
# Limpeza da coluna usedMemory e conversão para megabytes
data$usedMemoryMB <- gsub("GB", "", data$usedMemory) # Remover GB
data$usedMemoryMB <- gsub("TB", "", data$usedMemoryMB) # Remover TB
# Converter para numérico, tratando valores não convertíveis como NA
data$usedMemoryMB <- as.numeric(data$usedMemoryMB)
# Converter valores de memória para MB
data$usedMemoryMB[grepl("GB", data$usedMemory)] <- data$usedMemoryMB[grepl("GB", data$usedMemory)] * 1024
data$usedMemoryMB[grepl("TB", data$usedMemory)] <- data$usedMemoryMB[grepl("TB", data$usedMemory)] * 1000000
# Filtrar dados válidos (remover NAs)
data <- data[!is.na(data$usedMemoryMB) & !is.na(data$timeDiff), ]
return(data)
}
# Carregar os dados de cada arquivo
data_0_1 <- adjust_data("monitoringCloudData_0.1.csv")
## Warning in adjust_data("monitoringCloudData_0.1.csv"): NAs introduzidos por
## coerção
data_0_5 <- adjust_data("monitoringCloudData_0.5.csv")
## Warning in adjust_data("monitoringCloudData_0.5.csv"): NAs introduzidos por
## coerção
data_1 <- adjust_data("monitoringCloudData_1.csv")
## Warning in adjust_data("monitoringCloudData_1.csv"): NAs introduzidos por
## coerção
data_NONE <- adjust_data("monitoringCloudData_NONE.csv")
## Warning in adjust_data("monitoringCloudData_NONE.csv"): NAs introduzidos por
## coerção
# Organizar os gráficos em uma matriz 2x2
layout(matrix(c(1, 2, 3, 4), nrow=2, ncol=2))
# Função para criar os gráficos de linha
plot_graph <- function(data, title) {
ggplot(data, aes(x=timeDiff, y=usedMemoryMB)) +
geom_line() +
labs(title=title, x="Tempo (horas)", y="Memória Usada (MB)") +
theme_minimal()
}
# Gerar os gráficos e garantir que serão exibidos no R Markdown
print(plot_graph(data_0_1, "Memória Usada - 0.1"))

print(plot_graph(data_0_5, "Memória Usada - 0.5"))

print(plot_graph(data_1, "Memória Usada - 1"))

print(plot_graph(data_NONE, "Memória Usada - NONE"))

Questão 7
library(plotly)
##
## Anexando pacote: 'plotly'
## O seguinte objeto é mascarado por 'package:ggplot2':
##
## last_plot
## O seguinte objeto é mascarado por 'package:stats':
##
## filter
## O seguinte objeto é mascarado por 'package:graphics':
##
## layout
data <- read.csv("netflix_titles.csv")
data_filtered <- data[!grepl(",", data$country), ]
top_countries <- tail(sort(table(data_filtered$country)), 10)
p <- plot_ly(labels=names(top_countries), values=top_countries, type="pie")
p
Questão 8
library(DT)
datatable(data.frame(País=names(top_countries), Total=as.vector(top_countries)), options=list(pageLength=5, autoWidth=TRUE))
Questão 9
data$decade <- floor(data$release_year / 10) * 10
agg_data <- aggregate(data$type, by=list(data$decade, data$type), FUN=length)
names(agg_data) <- c("Decada", "Tipo", "Total")
p <- plot_ly(agg_data, x=~Decada, y=~Total, color=~Tipo, type="scatter", mode="lines+markers")
p
## 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
genres <- c("Dramas", "Action & Adventure", "Comedies")
data_filtered <- data[data$release_year >= 2000 & data$release_year <= 2010, ]
data_filtered$MainGenre <- sapply(strsplit(as.character(data_filtered$listed_in), ", "), `[`, 1)
genre_counts <- table(data_filtered$release_year, data_filtered$MainGenre)
genre_counts <- as.data.frame(as.table(genre_counts))
genre_counts <- genre_counts[genre_counts$Var2 %in% genres, ]
p <- plot_ly(genre_counts, x=~Var1, y=~Freq, color=~Var2, type="bar")
p
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors