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)
##1
graph1 <- plot(
x = clock, #eixo x
y = MRT_1F, #eixo y
type="o",
pch=4,
cex=1,
col="black",
xlab="Time between Things requests (seconds)",
ylab="Response Time (sec.)",
cex.lab=1
)
lines(MRT_3F, type="o", col="yellow", pch=0) #add uma nova linha
lines(MRT_5F, type="o", col="red", pch=1) #add uma nova linha
lines(MRT_10F, type="o", col="blue", pch=2) #add uma nova linha
lines(MRT_15F, type="o", col="purple", pch=5) #add uma nova linha
lines(MRT_sem_F, type="o", col="green", pch=4) #add uma nova linha
#legenda
legend("topright",
pch=c(4,0,1,2,5,4), #pois tem duas linhas
col=c("black", "yellow","red","blue","purple","green"),
legend=c("1 Fog", "3 Fog", "5 Fog", "10 Fog", "15 Fog", "w/o Fog"),
lty=1
)
layout(matrix(c(1, 2,
1, 2,
3, 4,
3, 4,
5, 6,
5, 6), nrow = 6, ncol = 2, byrow = TRUE))
##2
Values1 <-
matrix(c(MRT_sem_F,MRT_1F),
nrow=2,
ncol=length(clock),
byrow=TRUE
)
barplot(Values1,
names.arg= clock,
xlab= "Time between Things Request",
ylab= "Response Time (s)",
col= c("#E6E6E6", "#666666"),
beside=TRUE, #lado a lado
log = "y"
)
legend("topright",
col=c("#E6E6E6", "#666666"),
fill = c("#E6E6E6", "#666666"),
legend=c("w/o Fog","1 Fog"),
cex = 0.8
)
##3
Values2 <-
matrix(c(MRT_sem_F,MRT_3F),
nrow=2,
ncol=length(clock),
byrow=TRUE
)
barplot(Values2,
names.arg= clock,
xlab= "Time between Things Request",
ylab= "Response Time (s)",
col= c("#E6E6E6", "#666666"),
beside=TRUE, #lado a lado
log = "y",
)
legend("topright",
col=c("#E6E6E6", "#666666"),
fill = c("#E6E6E6", "#666666"),
legend=c("w/o Fog","3 Fog"),
cex = 0.8
)
##4
Values3 <-
matrix(c(MRT_sem_F,MRT_5F),
nrow=2,
ncol=length(clock),
byrow=TRUE
)
barplot(Values3,
names.arg= clock,
xlab= "Time between Things Request",
ylab= "Response Time (s)",
col= c("#E6E6E6", "#666666"),
beside=TRUE, #lado a lado
log = "y"
)
legend("topright",
col=c("#E6E6E6", "#666666"),
fill = c("#E6E6E6", "#666666"),
legend=c("w/o Fog","5 Fog"),
cex = 0.8
)
##5
Values4 <-
matrix(c(MRT_sem_F,MRT_10F),
nrow=2,
ncol=length(clock),
byrow=TRUE
)
barplot(Values4,
names.arg= clock,
xlab= "Time between Things Request",
ylab= "Response Time (s)",
col= c("#E6E6E6", "#666666"),
beside=TRUE, #lado a lado
log = "y"
)
legend("topright",
col=c("#E6E6E6", "#666666"),
fill = c("#E6E6E6", "#666666"),
legend=c("w/o Fog","10 Fog"),
cex = 0.8
)
##6
Values5 <-
matrix(c(MRT_sem_F,MRT_15F),
nrow=2,
ncol=length(clock),
byrow=TRUE
)
barplot(Values5,
names.arg= clock,
xlab= "Time between Things Request",
ylab= "Response Time (s)",
col= c("#E6E6E6", "#666666"),
beside=TRUE, #lado a lado
log = "y"
)
legend("topright",
col=c("#E6E6E6", "#666666"),
fill = c("#E6E6E6", "#666666"),
legend=c("w/o Fog","15 Fog"),
cex = 0.8
)
(5 pontos) Para a tabela abaixo que classifica a qualidade de refeição de acordo com categorias de preços crie um gráfico de barras empilhadas. Também adicione título, nomes de eixos e legenda.
colors <- c("orange", "yellow", "green")
quality_rating <- c("Good", "Very Good", "Excellent")
meal_price <- c("$10-19", "$20-29", "$30-39", "$40-49")
Values <- 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)
barplot(Values,
main = "Qualidades das refeições",
names.arg = meal_price,
xlab = "Preço da Refeição",
ylab = "Percentual",
ylim = c(0, 90),
col = colors,
beside = TRUE,
)
legend("top",
fill = colors,
legend = quality_rating,
cex = 0.6,
title = "Qualidade da Refeição"
)
(5 pontos) Faça o histograma das temperaturas do mês de maio do dataset airquality. No entanto, primeiro converta as temperaturas para graus Celsius através da expressão °C = (°F − 32) / 1.8. Após isso, gere o histograma. Também adicione título, nomes de eixos, cor e curva de densidade.
Temperaturas <- subset(x = airquality,
subset = airquality$Month == 5,
select = 4
)
Temperaturas <- mapply(FUN = function(x){(x-32)/1.8}, Temperaturas)
hist(Temperaturas,
col="blue",
density = 25,
freq = FALSE,
main = "Temperaturas de maio"
)
densityTemp <- density(Temperaturas)
lines(densityTemp,
col="red"
)
(5 pontos) Crie um gráfico de pizza com a porcentagem da tabela total de vendas por país. Use o dataset abaixo. Inclua a porcentagem de cada fatia, as cores das fatias e o nome do gráfico. Adicionalmente, use o comando legend() para incluir a legenda do gráfico. sales <- read.table(“https://training-course-material.com/images/8/8f/Sales.txt”,header=TRUE)
sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt",header=TRUE)
x <- sales$SALES
labels <- sales$COUNTRY
perc <- round(x/sum(x)*100)
lbls <- paste(labels,perc) #concatenar nome e proporção
lbls <- paste(lbls,"%", sep="") #concatenar o "%"
pie(x,
labels=lbls,
main="Total de vendas por país",
col=rainbow (length(x))
)
legend("topleft",
legend = labels,
cex=0.8,
fill = rainbow(length(x))
)
(5 pontos) Utilize os dados de contagens de insetos em unidades experimentais agrícolas tratados com inseticidas diferentes disponíveis no R em InsectSprays e construa um boxplot sem a presença dos outliers para os 6 tipos de inseticidas. Coloque título e nomes de eixos adequados. Além disso, as caixas devem ser preenchidas com a cor “yellow”.
boxplot(count ~ spray,
data= InsectSprays,
xlab = "Spray",
ylab = "Insetos",
main = "Contagens de insetos",
outline = FALSE,
col = "yellow"
)
(20 pontos) Gere os gráficos abaixo a partir dos seguintes dados: monitoringCloudData_0.1.csv, monitoringCloudData_0.5.csv, monitoringCloudData_1.csv e monitoringCloudData_NONE.csv. Esses dados consistem de informações de monitoramento dos recursos de uma máquina virtual. Basicamente, é necessário gerar gráficos de linha do tempo de coleta dos recursos (currentTime) em relação a memória usada (usedMemory). Porém, é necessário ajustar a coluna “currentTime” para que o tempo fique contínuo e a coluna “usedMemory” para que todas as informações fiquem megabytes. Por fim, use a função layout() para organizar os gráficos. Dica 1: use a função difftime() para calcular a diferença do tempo em horas. Dica 2: use os conceitos vistos na aula de string/regex para converter os dados na coluna “usedMemory” para apenas megabytes. Além disso, considere que um terabyte equivale a 1000000 megabytes e 1 gigabyte equivale a 1024 megabytes.
(10 pontos) Filtrando os conteúdos com apenas UM país de origem (coluna “country”), utilize o Plotly para obter um gráfico de pizza dos 10 países com mais conteúdo na plataforma.
library(plotly)
dados <- read.csv("netflix_titles.csv", header = TRUE, stringsAsFactors = FALSE)
paises <- strsplit(dados$country, ",") # Separar os países por vírgula e cria uma lista
num_paises <- sapply(paises, length) # Número de países em cada linha
dados_unicos <- dados[num_paises == 1, ] # Filtrar as linhas com apenas um país
frequencia_paises <- table(dados_unicos$country)
df_frequencia_paises <- as.data.frame(frequencia_paises)
colnames(df_frequencia_paises) <- c("País", "Frequência")
df_frequencia_paises_ordenado <- df_frequencia_paises[order(df_frequencia_paises$Frequência, decreasing = TRUE), ]
top_10_paises <- head(df_frequencia_paises_ordenado, 10)
plot_ly(data=top_10_paises,
labels=~País,
values=~Frequência,
type='pie'
)
(10 pontos) Considerando os 10 países descritos na questão anterior, utilize o Plotly para obter uma tabela com as colunas “País” e “Total de conteúdos”. Para tal tabela, é necessário que o cabeçalho esteja com o fundo da célula cinza e a letra em branco, e que todos os textos das células estejam @centralizados.
fig <- plot_ly(
top_10_paises,
type = 'table',
header = list(
values = c("País", "Total de conteúdos"),
align = "center",
font = list(color = "white"),
fill = list(color = "grey")
),
cells = list(
values = list(top_10_paises$País, top_10_paises$Frequência),
align = "center"
)
)
fig
(10 pontos) Utilizando o Plotly, obtenha um gráfico de linha com pontos (como na imagem abaixo) contendo a quantidade de conteúdo por década do Netflix, onde o eixo X representa as décadas e o eixo Y a quantidade de conteúdo disponível na plataforma (coluna “release_year”). Use uma linha azul para representar as séries e uma linha amarela representando os filmes. (Obs: considerar como década o período que compreende os anos de XXX0 à XXX9, por exemplo, 2000 à 2009)
library(plotly)
library(dplyr)
dados <- read.csv("netflix_titles.csv", header = TRUE, stringsAsFactors = FALSE)
dados <- dados %>%
mutate(decade = (release_year %/% 10) * 10) # Calcular a década
frequencia_decadas <- dados %>%
count(decade) %>%
rename(Frequência = n)
frequencia_decadas <- frequencia_decadas %>%
arrange(decade)
plot_ly(
data = frequencia_decadas,
x = ~decade,
y = ~Frequência,
type = 'scatter',
mode = 'lines+markers',
name = 'Frequência de Filmes por Década',
title = "Distribuição de Lançamentos de Filmes ao Longo das Décadas",
layout = list(
xaxis = list(title = "Década de Lançamento"),
yaxis = list(title = "Número de Filmes")
)
)
(10 pontos) Utilizando o Plotly, obtenha um gráfico que representa a quantidade de filmes lançados de um determinado gênero entre os anos de 2000 e 2010. Este gráfico deve ser de barras lado-a-lado (como na imagem abaixo), com cada barra representando a quantidade de filmes dos gêneros “Dramas”, “Action & Adventure” e “Comedies” lançados naquele determinado ano. (Obs: Para filmes com múltiplos gêneros, considerar apenas o primeiro descrito na coluna “listed_in”).
library(tidyr)
library(dplyr)
library(plotly)
df <- read.csv("netflix_titles.csv", header = TRUE, stringsAsFactors = FALSE)
select <- df %>%
filter(release_year > 1999 & release_year < 2011) %>%
select(release_year, listed_in)
generos <- select %>%
separate(
col = listed_in,
into = c("genero", "outro"),
sep = ",",
extra = "drop"
) %>%
mutate(genero = trimws(genero))
generos$genero <- as.factor(generos$genero)
generos$release_year <- as.factor(generos$release_year)
generos_filtrados <- generos %>%
filter(genero %in% c("Dramas", "Action & Adventure", "Comedies"))
contagem_generos <- generos_filtrados %>%
group_by(genero, release_year) %>%
summarise(n = n(), .groups = "drop") %>%
arrange(release_year, genero)
plot_ly(contagem_generos,
x = ~release_year,
y = ~n,
color = ~genero,
type = 'bar',
barmode = 'group',
colors = "Dark2",
text = ~n,
textposition = 'outside',
hoverinfo = "text") %>%
layout(title = "Número de Filmes por Gênero e Ano (2000-2010)",
xaxis = list(title = "Ano de Lançamento"),
yaxis = list(title = "Número de Filmes"),
legend = list(title = "Gênero"))