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

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 = "Clock", ylab = "Tempo de resposta(seg)")
lines(clock, MRT_3F, type = "o", pch=11, col = "yellow")
lines(clock, MRT_5F, type = "o",pch=1, col = "red")
lines(clock, MRT_10F, type = "o",pch=2, col = "blue")
lines(clock, MRT_15F, type = "o",pch=5, col = "purple")
lines(clock, MRT_sem_F, type = "o",pch=4, col = "green")

legend("topright", 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"), cex=0.8, lty=1)

values1 <-matrix(c(MRT_sem_F, MRT_1F), nrow = 2 , ncol = 7, byrow = TRUE)
values2 <-matrix(c(MRT_sem_F, MRT_3F), nrow = 2 , ncol = 7, byrow = TRUE)
values3 <-matrix(c(MRT_sem_F, MRT_5F), nrow = 2 , ncol = 7, byrow = TRUE)
values4 <-matrix(c(MRT_sem_F, MRT_10F), nrow = 2 , ncol = 7, byrow = TRUE)
values5 <-matrix(c(MRT_sem_F, MRT_15F), nrow = 2 , ncol = 7, byrow = TRUE)

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

barplot(values1, beside=TRUE, log ="y", col=c("#E6E6E6","#666666"), names.arg=clock, xlab="Time between Things requests", ylab="Response Time (s)", cex.axis = 0.85)
legend("topright", legend=c("w/o Fog", "1 Fog"), pch = c(15,15), col=c("#E6E6E6","#666666"), cex = 0.7)

barplot(values3, beside=TRUE, log ="y", col=c("#E6E6E6","#666666"), names.arg=clock, xlab="Time between Things requests", ylab="Response Time (s)", cex.axis = 0.85)
legend("topright", legend=c("w/o Fog", "5 Fog"), pch = c(15,15), col=c("#E6E6E6","#666666"), cex = 0.7)

barplot(values5, beside=TRUE, log ="y", col=c("#E6E6E6","#666666"), names.arg=clock, xlab="Time between Things requests", ylab="Response Time (s)", cex.axis = 0.85)
legend("topright", legend=c("w/o Fog", "15 Fog"), pch = c(15,15), col=c("#E6E6E6","#666666"), cex = 0.7)

barplot(values2, beside=TRUE, log ="y", col=c("#E6E6E6","#666666"), names.arg=clock, xlab="Time between Things requests", ylab="Response Time (s)", cex.axis = 0.85)
legend("topright", legend=c("w/o Fog", "3 Fog"), pch = c(15,15), col=c("#E6E6E6","#666666"), cex = 0.7)

barplot(values4, beside=TRUE, log ="y", col=c("#E6E6E6","#666666"), names.arg=clock, xlab="Time between Things requests", ylab="Response Time (s)", cex.axis = 0.85)
legend("topright", legend=c("w/o Fog", "10 Fog"), pch = c(15,15), col=c("#E6E6E6","#666666"), cex = 0.7)

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.

barplot(t(as.matrix(data.frame(Good, VeryGood , Excellent))), beside = FALSE, col =rainbow(9), 
        legend.text = TRUE, 
        args.legend = list(x = "top", inset = c(-0.085, 0)), 
        main = "Qualidade das refeições por preço", 
        xlab = "Preço medio", 
        ylab = "Indice de satistação", 
        names.arg = MealPrices)

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.

temp  <- airquality[which(airquality$Month == 5), ]

TempC <- ( (temp$Temp) -32)/1.8
Dens  <- density(TempC)

hist(TempC, 
     col =rainbow(9), 
     main = 'Histograma de Temperaturas em Maio com Curva Normal (em °C)', 
     xlab = 'Temperatura (°C)', 
     ylab = 'Densidade',
     freq = FALSE)


lines(Dens, col='#008000', lwd = 2)

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$Perc <- sales$SALES / sum(sales$SALES) * 100

percentlabels <- paste(round(sales$Perc, 2), "%")

pie(sales$SALES, labels= percentlabels, main = "Total Sales Percentage by Country", col =rainbow(9))

legend("topright", legend = sales$COUNTRY, fill = rainbow(9),cex=0.8)

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, outline=FALSE, col="yellow", main="Eficiência do Spray de Inseto", xlab="Tipos de inseticidas", ylab="contagens de insetos")

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.

data_01  <- read.csv("monitoringCloudData_0.1.csv")
data_05  <- read.csv("monitoringCloudData_0.5.csv")
data_1    <- read.csv("monitoringCloudData_1.csv")
data_NONE <- read.csv("monitoringCloudData_NONE.csv")


layout.matrix <- matrix(c(1, 3, 2, 4), nrow = 2, ncol = 2)
layout(layout.matrix,heights = c(2, 2),widths = c(2, 2))


tempof <- take_time(data_NONE)
data_NONE <- convert_memory_units(data_NONE)
plot(tempof, data_NONE$usedMemory, type = "l", pch=4, col="black", ylab = "Used Memory (MB)", xlab = "Time (hour)", main = "Memory Analysis (None Workload)")


tempof <- take_time(data_01)
data_01 <- convert_memory_units(data_01)
plot(tempof, data_01$usedMemory, type = "l", pch=4, col="black", ylab = "Used Memory (MB)", xlab = "Time (hour)", main = "Memory Analysis (Workload of 0.1)")

tempof <- take_time(data_05)
data_05 <- convert_memory_units(data_05)
plot(tempof, data_05$usedMemory, type = "l", pch=4, col="black", ylab = "Used Memory (MB)", xlab = "Time (hour)", main = "Memory Analysis (Workload of 0.5)")

tempof <- take_time(data_1)
data_1 <- convert_memory_units(data_1)
plot(tempof, data_1$usedMemory, type = "l", pch=4, col="black", ylab = "Used Memory (MB)", xlab = "Time (hour)", main = "Memory Analysis (Workload of 1.0)")

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.

single_country_data <- netflix[grepl("^([^,]+)$", netflix$country), ]
country_counts <- table(single_country_data$country)
top_countries <- sort(country_counts, decreasing = TRUE)[1:10]
top_countries_df <- data.frame(Country = names(top_countries), Count = as.numeric(top_countries))

plot_ly(data = top_countries_df, labels = ~Country, values = ~Count, type = 'pie', textinfo = 'label+percent') %>% layout(title = 'Top 10 Países com Mais Conteúdo na Netflix (Somente um País de Origem)')

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.

plot_ly() %>%
    add_table(
        data = top_countries_df,
        header = list(
            values = c("País", "Total de conteúdos"),
            align = c("center", "center"),
            line = list(color = "black"),
            fill = list(color = "grey"),
            font = list(color = "white", size = 12)
        ),
        cells = list(
            values = rbind(top_countries_df$Country, top_countries_df$Count),
            align = c("center", "center"),
            line = list(color = "black"),
            fill = list(color = "white"),
            font = list(color = "black", size = 11)
        )
    )

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)

netflix$Decade <- floor(netflix$release_year / 10) * 10
content_by_decade <- netflix %>% group_by(type, Decade) %>% summarise(Count = n())

series_data <- filter(content_by_decade, type == "TV Show")
movies_data <- filter(content_by_decade, type == "Movie")

# Criar o gráfico de linha com Plotly
plot_ly() %>%
    add_trace(data = series_data, x = ~Decade, y = ~Count, type = 'scatter', mode = 'lines+markers',
              line = list(color = 'blue'), name = 'Series') %>%
    add_trace(data = movies_data, x = ~Decade, y = ~Count, type = 'scatter', mode = 'lines+markers',
              line = list(color = 'yellow'), name = 'Movies') %>%
    layout(title = 'Quantidade de Conteúdo por Década na Netflix',xaxis = list(title = 'Década'),yaxis = list(title = 'Quantidade de Conteúdo'))

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”).

netflix <- netflix[which(netflix$release_year >= 2000 & netflix$release_year <= 2010),]
netflix$release_year <- as.factor(netflix$release_year) 

D <- netflix[grep("^Drama", netflix$listed_in),"release_year"]
A <- netflix[grep("^Action & Adventure", netflix$listed_in),"release_year"]
C <- netflix[grep("^Comedies", netflix$listed_in),"release_year"]

D <- as.data.frame(table(D))
A <- as.data.frame(table(A))
C <- as.data.frame(table(C))

plot_ly(D, x = ~D, y = ~Freq, type = "bar", name = "Drama") %>%
add_trace(y = ~A$Freq, name = "Ação e Aventura")%>%
add_trace(y = ~C$Freq, name = "Comédia")%>% 
layout(xaxis = list(title = "Ano de Lançamento"),yaxis = list(title = "Qtd. de Lançamentos"))