# Dados fornecidos
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)
# Configurar layout: 2 linhas, 1 coluna
layout(matrix(c(1, 2), nrow = 2, ncol = 1))
# Primeiro gráfico: Linhas
plot(clock, MRT_1F, type = "o", col = "black", ylim = c(0, 550),
xlab = "Clock (GHz)", ylab = "MRT (ms)",
main = "Mean Response Time vs Clock Speed", pch = 16)
lines(clock, MRT_3F, type = "o", col = "red", pch = 16)
lines(clock, MRT_5F, type = "o", col = "blue", pch = 16)
lines(clock, MRT_10F, type = "o", col = "green", pch = 16)
lines(clock, MRT_15F, type = "o", col = "purple", pch = 16)
lines(clock, MRT_sem_F, type = "o", col = "orange", pch = 16)
legend("topright", legend = c("1F", "3F", "5F", "10F", "15F", "sem F"),
col = c("black", "red", "blue", "green", "purple", "orange"),
lty = 1, pch = 16, cex = 0.8)
# Segundo gráfico: Barras com escala logarítmica
valores_iniciais <- c(MRT_1F[1], MRT_3F[1], MRT_5F[1],
MRT_10F[1], MRT_15F[1], MRT_sem_F[1])
nomes <- c("1F", "3F", "5F", "10F", "15F", "sem F")
cores <- c("#E6E6E6", "#666666", "#E6E6E6", "#666666", "#E6E6E6", "#666666")
barplot(valores_iniciais, names.arg = nomes, log = "y",
col = cores, main = "Initial MRT Values (Log Scale)",
ylab = "MRT (ms) - Log Scale", xlab = "Configuration")
# Resetar layout
layout(1)
# Dados da tabela de qualidade de refeição
dados <- 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,
ncol = 4,
byrow = TRUE,)
rownames(dados) <- c("Bom", "Muito Bom", "Excelente")
colnames(dados) <- c("10-19", "20-29", "30-39", "40-49")
# Gráfico de barras empilhadas
barplot(dados, beside = FALSE, col = c("#FFD93D", "#4ECDC4", "#9D3"),
main = "Qualidade da Refeição por Categoria de Preço",
xlab = "Categoria de Preço", ylab = "Frequência",
legend.text = rownames(dados),
args.legend = list(x = "topright", bty = "n"))
# Carregar dataset airquality
data(airquality)
# Filtrar dados de maio e converter para Celsius
temp_maio <- airquality$Temp[airquality$Month == 5]
temp_celsius <- (temp_maio - 32) / 1.8
# Criar histograma
hist(temp_celsius, freq = FALSE, col = "lightblue", border = "white",
main = "Distribuição de Temperaturas em Maio",
xlab = "Temperatura (°C)", ylab = "Densidade")
# Adicionar curva de densidade
lines(density(temp_celsius), col = "darkblue", lwd = 2)
# Carregar dados
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt",
header = TRUE)
# Calcular total de vendas por país
# Somar todas as colunas numéricas para cada país
vendas_pais <- aggregate(. ~ COUNTRY, data = sales, sum)
# Calcular o total somando as colunas numéricas
if (ncol(vendas_pais) > 2) {
vendas_pais$Total <- rowSums(vendas_pais[, -1])
} else {
vendas_pais$Total <- vendas_pais[, 2]
}
# Calcular porcentagens
porcentagens <- round(100 * vendas_pais$Total / sum(vendas_pais$Total), 1)
labels <- paste(vendas_pais$COUNTRY, "\n", porcentagens, "%", sep = "")
# Cores
cores <- rainbow(nrow(vendas_pais))
# Gráfico de pizza
pie(vendas_pais$Total, labels = labels, col = cores,
main = "Porcentagem de Vendas Totais por País")
# Adicionar legenda
legend("topright", legend = vendas_pais$COUNTRY, fill = cores,
cex = 0.8, bty = "n")
# Carregar dados
data(InsectSprays)
# Criar 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")
# Função para processar os dados
processar_dados <- function(arquivo) {
dados <- read.csv(arquivo, stringsAsFactors = FALSE)
# Converter currentTime para formato de data/hora
dados$currentTime <- as.POSIXct(dados$currentTime, format = "%Y-%m-%d %H:%M:%S")
# Calcular tempo em horas desde o início
tempo_inicio <- min(dados$currentTime, na.rm = TRUE)
dados$tempo_horas <- as.numeric(difftime(dados$currentTime, tempo_inicio, units = "hours"))
# Processar usedMemory para megabytes
dados$usedMemory_MB <- sapply(dados$usedMemory, function(x) {
x <- trimws(as.character(x))
if (grepl("TB", x, ignore.case = TRUE)) {
valor <- as.numeric(gsub("[^0-9.]", "", x))
return(valor * 1000000)
} else if (grepl("GB", x, ignore.case = TRUE)) {
valor <- as.numeric(gsub("[^0-9.]", "", x))
return(valor * 1024)
} else if (grepl("MB", x, ignore.case = TRUE)) {
valor <- as.numeric(gsub("[^0-9.]", "", x))
return(valor)
} else {
# Tentar converter diretamente como número
valor <- as.numeric(gsub("[^0-9.]", "", x))
if (!is.na(valor)) return(valor)
}
return(NA)
})
# Remover linhas com NA
dados <- dados[!is.na(dados$usedMemory_MB) & !is.na(dados$tempo_horas), ]
return(dados)
}
# Carregar e processar os 4 arquivos
dados_01 <- processar_dados("monitoringCloudData_0.1.csv")
dados_05 <- processar_dados("monitoringCloudData_0.5.csv")
dados_1 <- processar_dados("monitoringCloudData_1.csv")
dados_NONE <- processar_dados("monitoringCloudData_NONE.csv")
# Configurar layout: 2x2
layout(matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2, byrow = TRUE))
# Gráfico 1: 0.1
plot(dados_01$tempo_horas, dados_01$usedMemory_MB, type = "l", col = "blue",
main = "Monitoring 0.1", xlab = "Time (hours)", ylab = "Used Memory (MB)")
# Gráfico 2: 0.5
plot(dados_05$tempo_horas, dados_05$usedMemory_MB, type = "l", col = "red",
main = "Monitoring 0.5", xlab = "Time (hours)", ylab = "Used Memory (MB)")
# Gráfico 3: 1
plot(dados_1$tempo_horas, dados_1$usedMemory_MB, type = "l", col = "green",
main = "Monitoring 1", xlab = "Time (hours)", ylab = "Used Memory (MB)")
# Gráfico 4: NONE
plot(dados_NONE$tempo_horas, dados_NONE$usedMemory_MB, type = "l", col = "purple",
main = "Monitoring NONE", xlab = "Time (hours)", ylab = "Used Memory (MB)")
# Resetar layout
layout(1)
library(plotly)
# Carregar dados Netflix
netflix <- read.csv("netflix_titles.csv")
# Filtrar conteúdos com apenas um país
netflix_um_pais <- netflix[!grepl(",", netflix$country) & netflix$country != "", ]
# Contar conteúdos por país
contagem_pais <- as.data.frame(table(netflix_um_pais$country))
colnames(contagem_pais) <- c("Pais", "Total")
# Ordenar e pegar top 10
top10_pais <- contagem_pais[order(-contagem_pais$Total), ][1:10, ]
# Criar gráfico de pizza
plot_ly(top10_pais, labels = ~Pais, values = ~Total, type = 'pie',
textposition = 'inside', textinfo = 'label+percent') %>%
layout(title = "Top 10 Países com Mais Conteúdo na Netflix")
library(plotly)
# Usar dados do exercício anterior
top10_pais <- top10_pais[order(-top10_pais$Total), ]
# Converter Pais para character para evitar problemas com factors
top10_pais$Pais <- as.character(top10_pais$Pais)
# Criar tabela
plot_ly(
type = 'table',
header = list(
values = c("País", "Total de conteúdos"),
align = c('center', 'center'),
line = list(width = 1, color = 'black'),
fill = list(color = 'grey'),
font = list(family = "Arial", size = 14, color = "white")
),
cells = list(
values = list(top10_pais$Pais, top10_pais$Total),
align = c('center', 'center'),
line = list(color = "black", width = 1),
font = list(family = "Arial", size = 12, color = c("black"))
)
)
library(plotly)
# Carregar dados
netflix <- read.csv("netflix_titles.csv")
# Calcular década
netflix$decada <- floor(netflix$release_year / 10) * 10
# Separar por tipo
series <- netflix[netflix$type == "TV Show", ]
filmes <- netflix[netflix$type == "Movie", ]
# Contar por década
contagem_series <- as.data.frame(table(series$decada))
colnames(contagem_series) <- c("Decada", "Total")
contagem_series$Decada <- as.numeric(as.character(contagem_series$Decada))
contagem_filmes <- as.data.frame(table(filmes$decada))
colnames(contagem_filmes) <- c("Decada", "Total")
contagem_filmes$Decada <- as.numeric(as.character(contagem_filmes$Decada))
# Criar gráfico
plot_ly() %>%
add_trace(data = contagem_series, x = ~Decada, y = ~Total,
type = 'scatter', mode = 'lines+markers',
name = 'Séries', line = list(color = 'blue')) %>%
add_trace(data = contagem_filmes, x = ~Decada, y = ~Total,
type = 'scatter', mode = 'lines+markers',
name = 'Filmes', line = list(color = 'yellow')) %>%
layout(title = "Quantidade de Conteúdo por Década",
xaxis = list(title = "Década"),
yaxis = list(title = "Quantidade de Conteúdo"))
library(plotly)
# Carregar dados
netflix <- read.csv("netflix_titles.csv")
# Filtrar filmes entre 2000 e 2010
filmes <- netflix[netflix$type == "Movie" &
netflix$release_year >= 2000 &
netflix$release_year <= 2010, ]
# Extrair primeiro gênero
filmes$primeiro_genero <- sapply(strsplit(as.character(filmes$listed_in), ","),
function(x) trimws(x[1]))
# Filtrar apenas os gêneros de interesse
generos_interesse <- c("Dramas", "Action & Adventure", "Comedies")
filmes_filtrados <- filmes[filmes$primeiro_genero %in% generos_interesse, ]
# Criar tabela de contagem
contagem <- table(filmes_filtrados$release_year, filmes_filtrados$primeiro_genero)
contagem_df <- as.data.frame(contagem)
colnames(contagem_df) <- c("Ano", "Genero", "Quantidade")
# Criar gráfico de barras lado a lado
plot_ly(contagem_df, x = ~Ano, y = ~Quantidade, color = ~Genero,
type = 'bar', colors = c("red", "blue", "green")) %>%
layout(title = "Quantidade de Filmes por Gênero (2000-2010)",
xaxis = list(title = "Ano"),
yaxis = list(title = "Quantidade de Filmes"),
barmode = 'group')