Questões

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(). Ver exemplos do uso da função layout() em: https://stackoverflow.com/questions/38810854/how-to-use-layout-function-in-r e https://bookdown.org/ndphillips/YaRrr/arranging-plots-with-parmfrow-and-layout.html.

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)



Resposta:

q1.xlab <- "Time bewtween Things requests"
q1.ylab <- "Response time"

q1.g1.pch <- c(4, 11, 1, 2, 5, 4)
q1.g1.col <- c("black", "yellow", "red", "blue", "purple", "green")
q1.g1.legend <- c("1 Fog", "3 Fogs", "5 Fogs","10 Fogs","15 Fogs","w/o Fog")
plot(clock, MRT_1F, type="o", pch=q1.g1.pch[1], xlab=paste(q1.xlab,"(seconds)"), ylab=paste(q1.ylab,"(sec.)"))
lines(clock, y=MRT_3F, type="o", col=q1.g1.col[2], pch=q1.g1.pch[2])
lines(clock, y=MRT_5F, type="o", col=q1.g1.col[3], pch=q1.g1.pch[3])
lines(clock, y=MRT_10F, type="o", col=q1.g1.col[4], pch=q1.g1.pch[4])
lines(clock, y=MRT_15F, type="o", col=q1.g1.col[5], pch=q1.g1.pch[5])
lines(clock, y=MRT_sem_F, type="o", col=q1.g1.col[6], pch=q1.g1.pch[6])
legend("topright", pch = q1.g1.pch, col = q1.g1.col, legend = q1.g1.legend)

q1.g2to6.col <- c("#E6E6E6", "#666666")
q1.g2to6.xlab <- q1.xlab
q1.g2to6.ylab <- paste(q1.ylab, "(s)")

par(mfrow=c(3, 2), mar= c(4, 4, 2, 0))


q1.g2.legend=c("w/o Fog", "1 Fog")
barplot(matrix(c(rbind(MRT_sem_F, MRT_1F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright",  fill=q1.g2to6.col, legend=q1.g2.legend)

q1.g3.legend=c("w/o Fog", "3 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_3F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright",  fill=q1.g2to6.col, legend=q1.g3.legend)

q1.g4.legend=c("w/o Fog", "5 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_5F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright",  fill=q1.g2to6.col, legend=q1.g4.legend)

q1.g5.legend=c("w/o Fog", "10 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_10F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright",  fill=q1.g2to6.col, legend=q1.g5.legend)

q1.g6.legend=c("w/o Fog", "15 Fogs")
barplot(matrix(c(rbind(MRT_sem_F, MRT_15F)), nrow=2, ncol=length(clock)), names.arg=clock, xlab=q1.g2to6.xlab, ylab=q1.g2to6.ylab, col=q1.g2to6.col, beside=T, log="y")
legend("topright",  fill=q1.g2to6.col, legend=q1.g6.legend)

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.



Resposta:

  q2.good <- c(53.8, 33.9, 2.6, 0)
  q2.veryGood <- c(43.6, 52.2, 60.5, 21.4)
  q2.excellent <- c(2.6, 11.9, 36.8, 78.6)
  q2.names <- c("$10-19", "$20-29", "$30-39", "$40-49")
  
  q2.col <- rainbow(3)
  q2.legend <- c("Good", "Very Good", "Excellent")
  
  q2.data <- matrix(c(q2.good, q2.veryGood, q2.excellent), nrow=length(q2.legend), byrow=T)
  
  par(mar = c(5, 4, 4, 2) + 0.1)
  barplot(q2.data, names.arg=q2.names, main="Rating by Meal Price", xlab="Meal Price", ylab="Quality Rating", col= q2.col)
  add_legend("topright", inset=c(0.083,0.03), fill=q2.col, legend=q2.legend, cex=0.8, bty="n")

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.

Resposta:

  q3.data <- (filter(airquality, Month==5)$Temp-32)/1.8

  hist(q3.data, col="gray", probability=T, main="Histogram of Temperature", xlab="Temperature (ºC)", ylab="Density")
  lines(density(q3.data))

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)



Resposta:

  q4.data <- sales$SALES
  q4.labels <- paste(round(q4.data/sum(q4.data)*100), "%", sep="")
  q4.legend <- sales$COUNTRY
  q4.col <- rainbow(length(q4.data))
  
  pie(q4.data, labels=q4.labels, col=q4.col, main="Vendas por país")
  legend("topright",legend=q4.legend, fill=q4.col)

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”

Resposta:

  boxplot(count ~ spray, data=InsectSprays, main="Insetos por tipo de inseticida", col="yellow", outline=F, ylab="Quantidade de insetos", xlab="Tipo de inseticida")

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.

Resposta:

    q6.data.none <- q6.loadAndPrep("./data/monitoringCloudData_NONE.csv")
    q6.data.01 <- q6.loadAndPrep("./data/monitoringCloudData_0.1.csv")
    q6.data.05 <- q6.loadAndPrep("./data/monitoringCloudData_0.5.csv")
    q6.data.1 <- q6.loadAndPrep("./data/monitoringCloudData_1.csv")
    
    par(mfrow=c(2, 2))
    plot(q6.data.none, type="s", main="Memory Analisys (None Workload)", xlab="Time (hour)", ylab="Used Memory (MB)")
    plot(q6.data.01, type="s", main="Memory Analisys (Workload of 0.1)", xlab="Time (hour)", ylab="Used Memory (MB)", ylim=c(0, 3500))
    plot(q6.data.05, type="s", main="Memory Analisys (Workload of 0.5)", xlab="Time (hour)", ylab="Used Memory (MB)", ylim=c(0, 1200))
    plot(q6.data.1, type="s", main="Memory Analisys (Workload of 1)", xlab="Time (hour)", ylab="Used Memory (MB)")

Questão 7

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.

Resposta:

q7.data <- netflix_df %>%
  filter(str_count(country, ",") == 0) %>%
  group_by(country) %>%
  summarise(movie_count = n()) %>%
  arrange(desc(movie_count)) %>%
  head(10)

plot_ly(
  q7.data,
  labels=~country,
  values=~movie_count,
  type="pie"
)

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.

Resposta:

plot_ly(
  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(diamonds$cut, diamonds$price),
    align = c("center", "center"),
    line = list(color = "black", width = 1),
    font = list(family = "Arial", size = 12, color = c("black"))
  ))

Questão 9

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.

Resposta:

  q9.data <- netflix_df %>%
    mutate(release_decade = paste(floor(release_year/10), "0", sep="")) %>%
    group_by(release_decade, type) %>%
    summarise(count = n())
## `summarise()` has grouped output by 'release_decade'. You can override using
## the `.groups` argument.
  show(q9.data)
## # A tibble: 18 × 3
## # Groups:   release_decade [10]
##    release_decade type    count
##    <chr>          <chr>   <int>
##  1 1920           TV Show     1
##  2 1940           Movie      13
##  3 1940           TV Show     1
##  4 1950           Movie      11
##  5 1960           Movie      22
##  6 1960           TV Show     3
##  7 1970           Movie      63
##  8 1970           TV Show     4
##  9 1980           Movie      99
## 10 1980           TV Show     7
## 11 1990           Movie     194
## 12 1990           TV Show    31
## 13 2000           Movie     601
## 14 2000           TV Show   127
## 15 2010           Movie    3951
## 16 2010           TV Show  1760
## 17 2020           Movie     423
## 18 2020           TV Show   476
  q9.data <- q9.data %>%
    pivot_wider(names_from = type, values_from = count, values_fill = 0)

  colnames(q9.data) <- c("release_decade", "movie_count", "show_count")
  
  show(q9.data)
## # A tibble: 10 × 3
## # Groups:   release_decade [10]
##    release_decade movie_count show_count
##    <chr>                <int>      <int>
##  1 1920                     1          0
##  2 1940                     1         13
##  3 1950                     0         11
##  4 1960                     3         22
##  5 1970                     4         63
##  6 1980                     7         99
##  7 1990                    31        194
##  8 2000                   127        601
##  9 2010                  1760       3951
## 10 2020                   476        423
  plot_ly(
    as.data.frame(q9.data),
    x=~release_decade,
    y=~show_count,
    name="TV Series",
    mode="lines",
    type="scatter"
   ) %>%
    add_trace(y=~movie_count, name="Movies", mode="lines") %>%
    layout(xaxis = list(title = 'Década'), 
     yaxis = list(title = 'Qnd. Conteúdo'), legend = list(title=list(text='<b> Tipo de conteúdo </b>')))