Atividade 12

Crie os gráficos abaixo no R Markdown cada um em uma aba chamada de, por exemplo, Questão 1, Questão 2, etc. Após finalizar os gráficos, publique a resposta e submeta o link do R markdown no formulário. Note que o código precisa ser apresentado. Além disso, para as questões de 1 a 6 use o R tradicional, enquanto para as questões de 7 a 10 use o Ploty.

Questão 1

Use os dados abaixo para gerar os gráficos. Para o segundo gráfico (barras), use a escala logarítmica (log = “y”) e as seguintes cores: “#E6E6E6”, “#666666”. Além disso, os gráficos podem ser organizados com a função layout().

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)


plot(clock,MRT_1F,type='o',pch=4, col='black', xlab = 'Time between Things requests (seconds)', ylab='Response Time (sec.)')
lines(MRT_3F, type='o', pch=11, col='yellow')
lines(MRT_5F, type='o', pch=1, col='red')
lines(MRT_10F, type='o', pch=2, col='blue')
lines(MRT_15F, type='o', pch=5, col='purple')
lines(MRT_sem_F, type='o', pch=4, col='green')

legend('topright', cex=0.5,pch=c(4,11,1,2,5,4), col=c('black','yellow','red','blue','purple','green'), legend=c('1 Fog', '3 Fogs', '5 Fogs', '10 Fogs', '15 Fogs', 'w/o Fog'), lty=1)

layout(mat = matrix(c(1,3,5,2,4,0), 
                    nrow = 3, 
                    ncol = 2),
       heights = c(2, 2, 2),    
       widths = c(2, 2))



### Gráfico de barras 1 Fog

colors = c("#E6E6E6", "#666666")
mrt <- c('w/o Fog', '1 Fog')
valores <- matrix(c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268,517.1468515630205, 85.13094142168089, 30.333207896694553, 12.694776264558937, 3.3041601673945418, 1.1823111717498882, 1.1892293502386786), nrow=2, ncol=7, byrow = TRUE)
barplot(valores, names.arg = clock, xlab = 'Time between Things requests', ylab='Response Time (s)', col=colors, beside = T, log = "y")
legend('topright', pch=c(15,15), col=colors, legend=mrt)


### Gráfico de barras 3 Fog

colors = c("#E6E6E6", "#666666")
mrt <- c('w/o Fog', '3 Fog')
valores <- matrix(c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268,156.68929936163462, 11.540837783562276, 0.4512835621696538, 0.4509797929766453, 0.4502068233039181, 0.4496185276300172, 0.4543157082191288), nrow=2, ncol=7, byrow = TRUE)
barplot(valores, names.arg = clock,xlab = 'Time between Things requests', ylab='Response Time (s)', col=colors, beside = T, log = "y")
legend('topright', pch=c(15,15), col=colors, legend=mrt)


###Gráfico de barras 5 Fog

colors = c("#E6E6E6", "#666666")
mrt <- c('w/o Fog', '5 Fog')
valores <- matrix(c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268, 83.90319666471157, 0.3068151086494968, 0.30522314133037304, 0.3072588968084928, 0.30655265997285697, 0.3055812715727718, 0.3053297166713006), nrow=2, ncol=7, byrow = TRUE)
barplot(valores, names.arg = clock,xlab = 'Time between Things requests', ylab='Response Time (s)', col=colors, beside = T, log = "y")
legend('topright', pch=c(15,15), col=colors, legend=mrt)


###Gráfico de barras 10 Fog

colors = c("#E6E6E6", "#666666")
mrt <- c('w/o Fog', '10 Fog')
valores <- matrix(c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268, 29.55430642951759, 0.19832832665772515, 0.1971923924717474, 0.19796648905716516, 0.19615594370806338, 0.2034569237883263, 0.19617420889447737), nrow=2, ncol=7, byrow = TRUE)
barplot(valores, names.arg = clock,xlab = 'Time between Things requests', ylab='Response Time (s)', col=colors, beside = T, log = "y")
legend('topright', pch=c(15,15), col=colors, legend=mrt)


###Gráfico de barras 15 Fog

colors = c("#E6E6E6", "#666666")
mrt <- c('w/o Fog', '15 Fog')
valores <- matrix(c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268, 11.317736530583566, 0.167364215666193, 0.16172168266811013, 0.16701085329580515, 0.1598052657153692, 0.1645934043532696, 0.16216563797118075), nrow=2, ncol=7, byrow = TRUE)
barplot(valores, names.arg = clock,xlab = 'Time between Things requests', ylab='Response Time (s)', col=colors, beside = T, log = "y")
legend('topright', pch=c(15,15), col=colors, legend=mrt)

Questão 2

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.

QualityRating <- c('Good', 'Very Good', 'Excellent')
precos <- c('$10-19', '$20-29', '$30-39', '$40-49')

colors <- c('pink', 'grey', 'purple')

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 = 'Qualidade da Refeição por Preço', names.arg = precos, xlab = 'Meal Price', ylab = 'Quality Rating', col = colors)
legend('bottomleft', pch=c(15,15,15), cex=0.8,col = colors, legend = QualityRating)

Questão 3

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.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
dt <- airquality %>% filter(airquality$Month == 5) %>% mutate(Temp = (Temp-32)/1.8)
temperatura <- dt$Temp
hist(temperatura, col='grey', main = 'Histograma da Temperatura', xlab = 'Temperatura (ºC)', ylab = 'Frequência', probability = T)
densityTemp <- density(temperatura)
lines(densityTemp)

Questão 4

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)

pct <- round(sales$SALES/sum(sales$SALES)*100)
lbls <- paste(sales$COUNTRY, pct)
lbls <- paste(lbls, '%', sep='')
pie(x = sales$SALES, labels = lbls, main = 'Porcentagem de vendas por país', col=terrain.colors(6))
legend('topleft', legend = sales$COUNTRY, cex=0.7,fill =  terrain.colors(length(sales$SALES)))

Questão 5

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, main = 'Inseticidas vs Insetos', xlab = 'Inseticida', ylab = 'Quantidade de Insetos', col='yellow',outline = FALSE)

Questão 6

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.

print("Não foi possível concluir.")
## [1] "Não foi possível concluir."

Questão 7

Para os exercícios a seguir utilizaremos o dataset Netflix Movies and TV Shows. Essa base de dados reúne os filmes e séries disponíveis na Netflix em 2019, e se divide em algumas colunas que descrevem o tipo do conteúdo (série ou filme), o país de origem, o ano de lançamento, o gênero, entre outros.

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)
## Carregando pacotes exigidos: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
netflix <-read.csv('netflix_titles.csv')

df_netflix <- netflix[!grepl(',', netflix$country, ),]

df_fim <- df_netflix %>% group_by(df_netflix$country) %>% count()

df_fim <- arrange(df_fim, desc(n))
df_fim  <- df_fim[-3,]
df_netflix_analise <- df_fim[1:10,]
colnames(df_netflix_analise)[1] <- "Países"
fig <- plot_ly(df_netflix_analise, labels = ~Países, values = ~n, type = 'pie')
fig

Questão 8

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(df_netflix_analise,
               type = 'table',
               columnwidth = c(100, 100),
               columnorder = c(0, 1),
               header = list(
                 values = c("País","Total de Conteúdos"),
                 align = c("center", "center"),
                 line = list(width = 1, color = 'black'),
                 fill = list(color = c("grey", "grey")),
                 font = list(family = "Arial", size = 14, color = "white")
               ),
               cells = list(
                 values = rbind(df_netflix_analise$Países, df_netflix_analise$n),
                 align = c("center", "center"),
                 line = list(color = "black", width = 1),
                 font = list(family = "Arial", size = 12, color = c("black"))
               ))

fig

Questão 9

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)

#Fazendo uma função para transformar os anos em décadas:

ano = netflix$release_year
ano_para_decada <- function(ano) {
  decada <- floor(ano / 10) * 10
  return(decada)
}

netflix_dec <- netflix %>% mutate(Década = ano_para_decada(ano))


df_netflix <- netflix_dec %>% group_by(netflix_dec$Década) 


conteudo_por_decada <- aggregate(cbind(Quantidade = release_year) ~ Década + type, data = netflix_dec, FUN = length)

fig <- plot_ly(conteudo_por_decada, x = ~Década, y = ~Quantidade, color = ~type, colors = c('yellow', 'blue'), 
        type = 'scatter', mode = 'lines+markers') %>% layout(xaxis = list(title = "Década"), yaxis = list(title = "Qnt. de Conteúdo"),title = "Qnt. de Conteúdo por Década na Netflix")
                                                            
fig

Questão 10

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(stringr)

primeiro_item <- function(generos) {
  genero <- strsplit(generos, ",")[[1]]
  return(trimws(genero[1]))
}

netflix$primeiro_item <- sapply(netflix$listed_in, primeiro_item)

filmes <- netflix %>% filter(release_year >= 2000 & release_year <= 2010) %>% filter(type=='Movie') %>% filter(primeiro_item %in% c("Dramas", "Action & Adventure", "Comedies"))

df_filmes <- filmes %>% group_by(release_year, primeiro_item) %>% summarise(quantidade = n())
## `summarise()` has grouped output by 'release_year'. You can override using the
## `.groups` argument.
fig <- plot_ly(df_filmes, x=~release_year, y=~quantidade, type='bar', color = ~primeiro_item, colors = c('orange', 'green', 'blue'))%>% layout(xaxis = list(title = "Ano de Lançamento"), yaxis = list(title = "Qnt. de Lançamentos"),title = "Qnt de filmes lançados de um determinado gênero entre 2000 e 2010")
fig