Questões

Questão 1

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
)

Questão 2

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

Questão 3

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

Questão 4

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

Questão 5

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

Questão 6

(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.

Questão 7

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

Questão 8

(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

Questão 9

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

Questão 10

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