Dados de tempo médio de resposta (MRT) para diferentes quantidades de Fogs.
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 — tempo de resposta por intervalo entre requisições:
cores <- c("black", "yellow", "red", "blue", "violet", "green")
simbolos <- c(4, 1, 2, 2, 3, 6)
series <- list(MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F)
rotulos <- c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog")
plot(clock, MRT_1F, type = "o", col = cores[1], pch = simbolos[1],
ylim = c(0, max(MRT_1F)), xaxt = "n",
xlab = "Time between Things requests (seconds)",
ylab = "Response Time (sec.)")
axis(1, at = c(0, 0.5, 1, 1.5, 2, 2.5, 3))
for (i in 2:6) {
lines(clock, series[[i]], type = "o", col = cores[i], pch = simbolos[i])
}
legend("topright", legend = rotulos, col = cores, pch = simbolos, lty = 1)Gráficos de barras (escala logarítmica) comparando
cada configuração com o cenário sem Fog, organizados com
layout():
# matriz de layout: 3 linhas x 2 colunas; a última célula fica vazia (0)
graphics::layout(matrix(c(1, 2,
3, 4,
5, 0), nrow = 3, byrow = TRUE))
com_fog <- list(MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F)
nomes <- c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs")
for (i in seq_along(com_fog)) {
dados <- rbind(MRT_sem_F, com_fog[[i]])
barplot(dados, beside = TRUE, log = "y",
col = c("#E6E6E6", "#666666"),
names.arg = clock,
xlab = "Time between Things requests",
ylab = "Response time (s)",
legend.text = c("w/o Fog", nomes[i]),
args.legend = list(x = "topright", cex = 0.8))
}qualidade <- 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, byrow = TRUE,
dimnames = list(c("Good", "Very Good", "Excellent"),
c("$10-19", "$20-29", "$30-39", "$40-49")))
qualidade## $10-19 $20-29 $30-39 $40-49
## Good 53.8 33.9 2.6 0.0
## Very Good 43.6 54.2 60.5 21.4
## Excellent 2.6 11.9 36.8 78.6
cores_q2 <- c("#F4A582", "#92C5DE", "#0571B0")
par(mar = c(5, 4, 4, 9), xpd = TRUE) # margem extra à direita para a legenda
barplot(qualidade, col = cores_q2,
main = "Qualidade da refeição por faixa de preço",
xlab = "Preço da refeição", ylab = "Percentual (%)",
ylim = c(0, 100), cex.names = 0.9)
legend("topright", inset = c(-0.28, 0), legend = rownames(qualidade),
fill = cores_q2, title = "Qualidade")maio <- subset(airquality, Month == 5)
temp_celsius <- (maio$Temp - 32) / 1.8
hist(temp_celsius, freq = FALSE, col = "lightblue", border = "white",
main = "Temperaturas em Nova York — Maio de 1973",
xlab = "Temperatura (°C)", ylab = "Densidade",
ylim = c(0, 0.14))
lines(density(temp_celsius), col = "darkred", lwd = 2)sales <- read.table("https://www.dropbox.com/scl/fi/mpjt4uuqb5vtmfiw38phk/Sales.txt?rlkey=93jlz79xwrrt7ah66d5k403d7&dl=1",
header = TRUE)
head(sales)## COUNTRY SALES
## 1 US 340
## 2 UK 290
## 3 France 510
## 4 Poland 820
## 5 Japan 120
## 6 China 780
## 'data.frame': 6 obs. of 2 variables:
## $ COUNTRY: chr "US" "UK" "France" "Poland" ...
## $ SALES : int 340 290 510 820 120 780
# identifica a coluna de país pelo nome (country/país); se não achar,
# usa a primeira coluna de texto
nomes_col <- names(sales)
col_pais <- grep("country|pa[ií]s", nomes_col, ignore.case = TRUE, value = TRUE)[1]
if (is.na(col_pais)) {
col_pais <- nomes_col[!sapply(sales, is.numeric)][1]
}
# identifica a coluna de vendas pelo nome; se não achar, usa a primeira numérica
col_valor <- grep("sale|venda|total|revenue|amount|valor", nomes_col,
ignore.case = TRUE, value = TRUE)
col_valor <- col_valor[col_valor %in% nomes_col[sapply(sales, is.numeric)]][1]
if (is.na(col_valor)) {
col_valor <- nomes_col[sapply(sales, is.numeric)][1]
}
cat("Coluna de país:", col_pais, "| Coluna de vendas:", col_valor, "\n")## Coluna de país: COUNTRY | Coluna de vendas: SALES
# total de vendas por país (soma da coluna de vendas; se não houver
# coluna numérica, conta quantas vendas cada país teve)
if (is.na(col_valor)) {
total_pais <- table(sales[[col_pais]])
} else {
total_pais <- tapply(sales[[col_valor]], sales[[col_pais]], sum)
}
pct <- round(100 * total_pais / sum(total_pais), 1)
pct## China France Japan Poland UK US
## 27.3 17.8 4.2 28.7 10.1 11.9
cores_q4 <- rainbow(length(pct))
pie(pct, labels = paste0(pct, "%"), col = cores_q4,
main = "Percentual do total de vendas por país")
legend("topright", legend = names(pct), fill = cores_q4, cex = 0.8)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")# converte strings como "102.94MB", "3.35GB", "1.2TB" para megabytes
para_megabytes <- function(x) {
valor <- as.numeric(gsub("[A-Za-z]", "", x))
unidade <- gsub("[0-9.]", "", x)
fator <- ifelse(unidade == "TB", 1000000,
ifelse(unidade == "GB", 1024,
ifelse(unidade == "MB", 1,
ifelse(unidade == "KB", 1 / 1024,
ifelse(unidade == "B", 1 / 1024^2, NA)))))
valor * fator
}
ler_monitoramento <- function(arquivo) {
dados <- read.csv(arquivo, stringsAsFactors = FALSE)
tempo <- as.POSIXct(dados$currentTime, format = "%Y-%m-%d %H:%M:%OS")
dados$horas <- as.numeric(difftime(tempo, tempo[1], units = "hours"))
dados$memoria_mb <- para_megabytes(dados$usedMemory)
dados
}
pasta <- "monitoringCloudData"
none <- ler_monitoramento(file.path(pasta, "monitoringCloudData_NONE.csv"))
w01 <- ler_monitoramento(file.path(pasta, "monitoringCloudData_0.1.csv"))
w05 <- ler_monitoramento(file.path(pasta, "monitoringCloudData_0.5.csv"))
w1 <- ler_monitoramento(file.path(pasta, "monitoringCloudData_1.csv"))
head(w01[, c("currentTime", "horas", "usedMemory", "memoria_mb")])## currentTime horas usedMemory memoria_mb
## 1 2020-01-28 19:05:24.696535 0.00000000 247.09MB 247.09
## 2 2020-01-28 19:06:24.960884 0.01674010 247.34MB 247.34
## 3 2020-01-28 19:07:25.178265 0.03346715 247.29MB 247.29
## 4 2020-01-28 19:08:25.422138 0.05020156 247.02MB 247.02
## 5 2020-01-28 19:09:25.684460 0.06694109 245.26MB 245.26
## 6 2020-01-28 19:10:25.946943 0.08368067 247.49MB 247.49
graphics::layout(matrix(1:4, nrow = 2, byrow = TRUE))
graf_memoria <- function(d, titulo) {
plot(d$horas, d$memoria_mb, type = "l",
main = titulo, xlab = "Time (hour)", ylab = "Used Memory (MB)")
}
graf_memoria(none, "Memory Analysis (None Workload)")
graf_memoria(w01, "Memory Analysis (Workload of 0.1)")
graf_memoria(w05, "Memory Analysis (Workload of 0.5)")
graf_memoria(w1, "Memory Analysis (Workload of 1.0)")netflix <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE,
encoding = "UTF-8")
# apenas conteúdos com UM país de origem (sem vírgula e não vazio)
um_pais <- netflix[netflix$country != "" & !grepl(",", netflix$country), ]
top10 <- head(sort(table(um_pais$country), decreasing = TRUE), 10)
top10 <- data.frame(pais = names(top10), total = as.vector(top10))
plot_ly(top10, labels = ~pais, values = ~total, type = "pie",
textinfo = "label+percent") %>%
layout(title = "Top 10 países com mais conteúdo na Netflix")netflix$decada <- floor(netflix$release_year / 10) * 10
por_decada <- as.data.frame(table(netflix$decada, netflix$type))
names(por_decada) <- c("decada", "tipo", "qtd")
por_decada$decada <- as.numeric(as.character(por_decada$decada))
series <- subset(por_decada, tipo == "TV Show")
filmes <- subset(por_decada, tipo == "Movie")
plot_ly() %>%
add_trace(data = series, x = ~decada, y = ~qtd, type = "scatter",
mode = "lines+markers", name = "TV Series",
line = list(color = "blue"), marker = list(color = "blue")) %>%
add_trace(data = filmes, x = ~decada, y = ~qtd, type = "scatter",
mode = "lines+markers", name = "Movies",
line = list(color = "gold"), marker = list(color = "gold")) %>%
layout(xaxis = list(title = "Década"),
yaxis = list(title = "Qnt. Conteúdo"))filmes <- netflix[netflix$type == "Movie", ]
filmes$genero <- trimws(sub(",.*", "", filmes$listed_in)) # 1º gênero listado
generos <- c("Dramas", "Action & Adventure", "Comedies")
sel <- filmes[filmes$release_year > 2000 & filmes$release_year < 2010 &
filmes$genero %in% generos, ]
contagem <- as.data.frame(table(ano = sel$release_year, genero = sel$genero))
contagem$ano <- as.numeric(as.character(contagem$ano))
drama <- subset(contagem, genero == "Dramas")
acao <- subset(contagem, genero == "Action & Adventure")
comedia <- subset(contagem, genero == "Comedies")
plot_ly() %>%
add_bars(data = drama, x = ~ano, y = ~Freq, name = "Drama") %>%
add_bars(data = acao, x = ~ano, y = ~Freq, name = "Ação e Aventura") %>%
add_bars(data = comedia, x = ~ano, y = ~Freq, name = "Comédia") %>%
layout(barmode = "group",
xaxis = list(title = "Ano de Lançamento"),
yaxis = list(title = "Qnt. de Lançamentos"))