# vetores contendo os dados dos gráficos
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)
# grafico 1 - plot de referência
plot(clock, # eixo x
MRT_1F, # eixo y
type="o", # tipo da linha
pch=4, # simbolo das observacoes
cex=2, # tamanho dos simbolos
col="black", # coloracao da linha
#main = "Grafico 1", # titulo do grafico
xlab="Time between Things request", # nome do eixo x
ylab="Response time (s)", # nome do eixo y
cex.lab=1.2, # tamanho fonte do nome dos eixos
cex.axis=1.5, #tamanho fonte da numeração dos eixos,
cex.main=2 # tamanho fonte titulo
)
# outras linhas no grafico 1
lines(clock, MRT_3F,type="o",col="yellow",pch=11,lwd=2)
lines(clock, MRT_5F,type="o",col="red",pch=1,lwd=2)
lines(clock, MRT_10F,type="o",col="blue",pch=2,lwd=2)
lines(clock, MRT_15F,type="o",col="purple",pch=5,lwd=2)
lines(clock, MRT_sem_F,type="o",col="green",pch=4,lwd=2)
# legenda do grafico
legend("topright",
legend = c("1 fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog"),
col = c("black", "yellow","red","blue","purple","green"),
pch = c(4, 11, 1, 2, 5, 4), # símbolos
lty = 1)
#grafico com escala logaritmica (log = "y") e cores "#E6E6E6", "#666666"
par(mfrow = c(3, 2)) # Criando um gráfico matricial 3 x 2
valores1 <- matrix(c(MRT_sem_F,MRT_1F), nrow=2, ncol=7,byrow=T)
valores3 <- matrix(c(MRT_sem_F,MRT_3F), nrow=2, ncol=7,byrow=T)
valores5 <- matrix(c(MRT_sem_F,MRT_5F), nrow=2, ncol=7,byrow=T)
valores10 <-matrix(c(MRT_sem_F,MRT_10F), nrow=2, ncol=7,byrow=T)
valores15 <- matrix(c(MRT_sem_F,MRT_15F), nrow=2, ncol=7,byrow=T)
# Ajusta as margens e permite desenhar fora. Útil na posição da legenda
par(mar = c(5, 5, 4, 8), xpd = TRUE) # aumenta margem direita
#grafico fog 1
barplot(valores1,
log="y",
xlab="Time between Things request", ylab="Response time (s)",
names.arg=clock,
col=c("#E6E6E6","#666666"),
beside=T # barras lado a lado
)
#legenda do grafico fog1
legend("topright",
inset = c(-0.15, -0.5), #posicionamento da legenda no gráfico
legend = c("w/o Fog", "1 Fog"),
col=c("#E6E6E6","#666666"),
pch = c(15,15),
cex= 0.9 # tamanho da fonte da legenda
)
#grafico fog 3
barplot(valores3,
log="y",
xlab="Time between Things request", ylab="Response time (s)",
names.arg=clock,
col=c("#E6E6E6","#666666"),
beside=T
)
#legenda do grafico fog3
legend("topright",
inset = c(-0.15, -0.5), #posicionamento da legenda no gráfico
legend = c("w/o Fog", "3 Fog"),
col=c("#E6E6E6","#666666"),
pch = c(15,15),
cex= 0.9 # tamanho da fonte da legenda
)
#grafico fog 5
barplot(valores5,
log="y",
xlab="Time between Things request", ylab="Response time (s)",
names.arg=clock,
col=c("#E6E6E6","#666666"),
beside=T
)
#legenda do grafico fog 5
legend("topright",
inset = c(-0.15, -0.5), # posicionamento da legenda no gráfico
legend = c("w/o Fog", "5 Fogs"),
col=c("#E6E6E6","#666666"),
pch = c(15,15)
)#lty = 1)
#grafico fog 10
barplot(valores10,
log="y",
xlab="Time between Things request", ylab="Response time (s)",
names.arg=clock,
col=c("#E6E6E6","#666666"),
beside=T
)
#legenda do grafico fog 10
legend("topright",
inset = c(-0.15, -0.5), #posicionamento da legenda no gráfico
legend = c("w/o Fog", "10 Fogs"),
col=c("#E6E6E6","#666666"),
pch = c(15,15)
)#lty = 1)
#grafico fog 15
barplot(valores15,
log="y",
xlab="Time between Things request", ylab="Response time (s)",
names.arg=clock,
col=c("#E6E6E6","#666666"),
beside=T
)
#legenda do grafico fog 15
legend("topright",
inset = c(-0.15, -0.5),#posicionamento da legenda no gráfico
legend = c("w/o Fog", "15 Fogs"),
col=c("#E6E6E6","#666666"),
pch = c(15,15)
)#lty = 1)
# Criar a matriz de dados (percentuais por faixa de preço)
dados <- matrix(
c(53.7, 33.9, 2.6, 0.0, # Good
43.6, 54.2, 60.5, 21.4, # Very Good
2.6, 11.9, 36.8, 78.6), # Excellent
nrow = 3,
byrow = TRUE
)
# Nomear linhas e colunas
rownames(dados) <- c("Good", "Very Good", "Excellent")
colnames(dados) <- c("$10-19", "$20-29", "$30-39", "$40-49")
# Criar o gráfico de barras empilhadas
barplot(
dados,
beside = T, # FALSE para barras empilhadas
col = c("#66C2A5", "darkorange", "mediumpurple"),
main = "Qualidade da Refeição por Faixa de Preço",
xlab = "Faixa de Preço da Refeição",
ylab = "Percentual (%)",
legend.text = TRUE, # adiciona legenda automaticamente
args.legend = list(x = "topright", title = "Qualidade"),
ylim = c(0, 120) # espaço para legendas e barras
)
# carregando os dados
data("airquality")
# Apenas os dados do mes de maio
maio <- subset(airquality, Month == 5)
# Conversão da temperatura de Fahrenheit para Celsius
temperaturas<- (maio$Temp - 32) / 1.8
# Criação do gráfico tipo histograma
hist(temperaturas,
main = "Distribuição das Temperaturas em Maio (°C)", # título do gráfico
xlab = "Temperatura (°C)", # fonte eixo X
ylab = "Frequência", # fonte eixo Y
col = "darkorange", # coloração das barras
border = "black", # borda das barras
freq = FALSE) # usa densidade no eixo Y (necessário para adicionar a curva)
# Adiciona a curva de densidade
densidade <- density(temperaturas)
lines(densidade,
col = "black", # coloração da curva
lwd = 1.5 # largura da linha
)
# dataset disponibilizado
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt",header=TRUE)
# gráfico de pizza
x <- sales$SALES
labels <- sales$COUNTRY
pct <- round(x/sum(x)*100)
#lbls <- paste(labels, pct)
lbls <- paste(pct,"%", sep="")
pie(x, # dados de cada setor do gráfico
labels=lbls, # nomes de cada setor do gráfico
main = "Vendas por país", # título do gráfico
col=rainbow(6), # coloração do gráfico
)
# legenda do gráfico
legend("topright",
legend=c(sales$COUNTRY),
cex=0.8, fill=rainbow(length(x))
)
# boxplot
boxplot(count ~ spray, # variáveis dos eixo y ~ eixo x
data = InsectSprays, # conjunto de dados
main="Tratamento com Inseticidas", # título do gráfico
xlab = "Inseticidas", # fonte eixo X
ylab="Contagem", # fonte eixo Y
col="yellow", # coloração das caixas
outline=F # setado em FALSE para remoção dos outliers
)
# Conversão currentTime em horas contínuas
# transformação em objeto POSIXct (data/hora)
monitor0.1$currentTime <- as.POSIXct(monitor0.1$currentTime, format="%Y-%m-%d %H:%M:%S")
monitor0.5$currentTime <- as.POSIXct(monitor0.5$currentTime, format="%Y-%m-%d %H:%M:%S")
monitor1$currentTime <- as.POSIXct(monitor1$currentTime, format="%Y-%m-%d %H:%M:%S")
monitorNONE$currentTime <- as.POSIXct(monitorNONE$currentTime, format="%Y-%m-%d %H:%M:%S")
# cálculo da diferença em horas a partir do primeiro registro
tempo_horas0.1 <- as.numeric(difftime(monitor0.1$currentTime,
monitor0.1$currentTime[1],
units = "hours"))
tempo_horas0.5 <- as.numeric(difftime(monitor0.5$currentTime,
monitor0.5$currentTime[1],
units = "hours"))
tempo_horas1 <- as.numeric(difftime(monitor1$currentTime,
monitor1$currentTime[1],
units = "hours"))
tempo_horasNONE <- as.numeric(difftime(monitorNONE$currentTime,
monitorNONE$currentTime[1],
units = "hours"))
# conversão usedMemory para MB
# criação de função para conversão
converter_para_mb <- function(x) {
# remove espaços
x <- str_trim(x)
# extrai o valor numérico
valor <- as.numeric(str_extract(x, "[0-9.]+"))
# extrai a unidade (MB, GB, TB)
unidade <- str_extract(x, "[A-Za-z]+")
# conversão
if (unidade == "MB") {
return(valor)
} else if (unidade == "GB") {
return(valor * 1024)
} else if (unidade == "TB") {
return(valor * 1e6)
} else {
return(NA) # caso apareça unidade inesperada
}
}
# aplicação da função a toda a coluna
monitor0.1$usedMemory_MB <- sapply(monitor0.1$usedMemory, converter_para_mb)
monitor0.5$usedMemory_MB <- sapply(monitor0.5$usedMemory, converter_para_mb)
monitor1$usedMemory_MB <- sapply(monitor0.5$usedMemory, converter_para_mb)
monitorNONE$usedMemory_MB <- sapply(monitorNONE$usedMemory, converter_para_mb)
#grafico com layout 2x2
layout(matrix(1:4, nrow=2, ncol=2)) # semelhante à linha abaixo
#par(mfrow = c(2, 2)) # Criando um gráfico matricial 2 x 2
# Gráfico principal: memória usada em MB vs tempo
plot(tempo_horasNONE,
monitorNONE$usedMemory_MB,
type="l", col="black", lwd=2,
xlab="Tempo (horas)",
ylab="Memória usada (MB)",
#ylim = range(monitorNONE$usedMemory_MB) * c(0.9, 1.1), # setando os limites do eixo y para melhor visualização
main="Análise de Memória (NONE Workload)")
#Gráfico monitor 0.1
plot(tempo_horas0.1,
monitor0.1$usedMemory_MB,
type="l", col="black", lwd=2,
xlab="Tempo (horas)",
ylab="Memória usada (MB)",
main="Análise de Memória (Workload de 0.1)")
# gráfico monitor 0.5
plot(tempo_horas0.5,
monitor0.5$usedMemory_MB,
type="l", col="black", lwd=2,
xlab="Tempo (horas)",
ylab="Memória usada (MB)",
main="Análise de Memória (Workload de 0.5)")
# gráfico monitor 1
plot(tempo_horas1,
monitor1$usedMemory_MB,
type="l", col="black", lwd=2,
xlab="Tempo (horas)",
ylab="Memória usada (MB)",
main="Análise de Memória (Workload de 1.0)")
# gráfico de pizza usando o Plotly
netflix %>%
mutate(country = trimws(country)) %>% # A função trimws() remove espaços extras no início e no fim das strings
filter(
!is.na(country), # remoção de NAs
country != "", # Remoção de linhas vazias em country
!grepl(",", country)
) %>%
count(country, sort = TRUE) %>% # quantos títulos existem por país
top_n(10, n) %>% # selecão apenas os 10 países com mais títulos
plot_ly(
labels = ~country,# rótulos dos setores (nomes dos países)
values = ~n,# valores correspondentes (quantidade de títulos)
type = "pie", # tipo do grafico
textinfo = "percent", # mostra apenas o percentual
hoverinfo = "label+percent", # mostra país e percentual ao passar o mouse
insidetextorientation = "radial" # define orientação do texto dentro das fatia
) %>%
layout(
title = "Top 10 países com mais conteúdos",
legend = list(title = list(text = "País")) # personalização do título da legenda
)
# Filtramos apenas títulos com um país, removendo valores faltantes e vazios
top_paises2 <- netflix %>%
mutate(country = trimws(country)) %>% # remoção espaços extras
filter(
!is.na(country), # remoção NAs
country != "", # remoção strings vazias
!grepl(",", country) # seleciona apenas um país
) %>%
count(country, sort = TRUE) %>% # contagem e ordenação dos títulos por país
top_n(10, n) %>% # seleção dos 10 países com mais títulos
rename("País" = country, "Total de conteúdos" = n) # Renomeia colunas para a tabela
# a tabela com Plotly
plot_ly(
type = "table",
header = list(
values = names(top_paises2), # cabeçalho da tabela
fill = list(color = "gray"), # fundo do cabeçalho cinza
font = list(color = "white", size = 14), # texto branco e tamanho 14
align = "center" # centraliza o texto do cabeçalho
),
cells = list(
values = t(top_paises2), # valores das células (transpostos)
align = "center", # alinha os textos das células
fill = list(color = "white"), # coloração das células
font = list(color = "black", size = 12) # coloração e tamanho da fonte
)
) %>%
layout(
title = "Top 10 Países com Mais Conteúdos"
)
# conjunto de dados desejado
dados_decadas <- netflix %>%
mutate(
decada = floor(release_year / 10) * 10 # transforma o ano em década (ex: 1995 em 1990)
) %>%
group_by(decada, type) %>% # agrupa por década e tipo
summarise(total = n(), .groups = "drop") # conta o total de títulos em cada grupo
plot_ly() %>%
# Linha + pontos para Séries
add_trace(
data = dados_decadas %>% filter(type == "TV Show"),
x = ~decada,
y = ~total,
type = 'scatter',
mode = 'lines+markers', # inclui linha e ponto
name = "TV Series (Seriado)",
line = list(color = 'steelblue', width = 3),
marker = list(color = 'steelblue', size = 8)
) %>%
# Linha + pontos para Filmes
add_trace(
data = dados_decadas %>% filter(type == "Movie"), # apenas series
x = ~decada, #eixo X
y = ~total, # eixo Y
type = 'scatter', # tipo do gráfico
mode = 'lines+markers', # linhas e pontos
name = "Movies (Filme)",
line = list(color = 'gold', width = 3),
marker = list(color = 'gold', size = 8)
) %>%
layout(
xaxis = list(title = "Década"), # texto eixo X
yaxis = list(title = "Qnd. Conteúdo"), # texto eixo Y
legend = list(title = list(text = "Tipo de conteúdo")) # titulo legenda
)
# preparação dos dados
dados_filmes <- netflix %>%
filter(
type == "Movie", # apenas filmes
release_year >= 2000, # ano >= 2000
release_year <= 2010 # ano <= 2010
) %>%
mutate(
# Pega apenas o primeiro gênero listado
primeiro_genero = sub(",.*", "", listed_in) # substitui tudo após a primeira vírgula
) %>%
filter(primeiro_genero %in% c("Dramas", "Action & Adventure", "Comedies")) %>%
group_by(release_year, primeiro_genero) %>%
summarise(total = n(), .groups = "drop")
# grafico de barras lado a lado
plot_ly(
data = dados_filmes,
x = ~release_year, # eixo X ano de lançamento
y = ~total, # eixo Y quantidade de filmes
color = ~primeiro_genero, # cor das barras de acordo com o gênero
colors = c("Dramas" = "slateblue", "Action & Adventure" = "darkorange", "Comedies" = "lightgreen"), # cores personalizadas
type = 'bar' # tipo gráfico barra
) %>%
layout(
barmode = 'group', # barras lado a lado
title = list(
text = "Filmes por gênero (2000-2010)",
x = 0.5,
xanchor = "center",
font = list(size = 16)
),
xaxis = list(title = "Ano de Lançamento"),
yaxis = list(title = "Quantidade de filmes"),
legend = list(title = list(text = "Gênero"))
)