Atividade

Questão 1

# Dados fornecidos
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)

# Gráfico 1: Curva de Resposta vs Tempo
plot(clock, MRT_1F, type="o",pch=4, col="black", ylim=c(0, 520), xlab="Time between Things requests (seconds)", ylab="Response Time (sec.)")
lines(clock, MRT_5F, type="o",pch=11, col="blue")
lines(clock, MRT_3F, type="o",pch=1, col="yellow")
lines(clock, MRT_10F, type="o",pch=2, col="purple")
lines(clock, MRT_15F, type="o",pch=5, col="green")
lines(clock, MRT_sem_F, type="o",pch=4, col="darkgreen")
legend("topright", legend=c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog"),
       col=c("black", "yellow", "blue", "purple", "green", "darkgreen"), lty=1, lwd=2, pch = c(4, 11, 1, 2, 5, 4))

# Definir os dados fornecidos
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)

# Cores para as barras
colors <- c("#E6E6E6", "#666666")

# Configuração da janela de gráficos com 5 gráficos organizados em 2 colunas e 3 linhas
layout(matrix(1:6, ncol=2, byrow=TRUE), widths = rep(1, 2), heights = rep(1, 3))

# Ajustar o limite da escala y para melhorar a visualização
ylim_vals <- c(0.1, max(MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F) * 1.1)

# Gráfico 1: Comparação MRT (1 Fog) vs. Sem Fog
barplot(rbind(MRT_sem_F, MRT_1F), beside=TRUE, col=colors, names.arg=clock, 
        ylab="Response time (s)", xlab="Time between Things requests", las=1, 
        log="y", ylim=ylim_vals, main="MRT (1 Fog) vs. No Fog")
legend("topright", legend=c("w/o Fog", "1 Fog"), fill=colors, bty="n")

# Gráfico 2: Comparação MRT (3 Fogs) vs. Sem Fog
barplot(rbind(MRT_sem_F, MRT_3F), beside=TRUE, col=colors, names.arg=clock, 
        ylab="Response time (s)", xlab="Time between Things requests", las=1, 
        log="y", ylim=ylim_vals, main="MRT (3 Fogs) vs. No Fog")
legend("topright", legend=c("w/o Fog", "3 Fogs"), fill=colors, bty="n")

# Gráfico 3: Comparação MRT (5 Fogs) vs. Sem Fog
barplot(rbind(MRT_sem_F, MRT_5F), beside=TRUE, col=colors, names.arg=clock, 
        ylab="Response time (s)", xlab="Time between Things requests", las=1, 
        log="y", ylim=ylim_vals, main="MRT (5 Fogs) vs. No Fog")
legend("topright", legend=c("w/o Fog", "5 Fogs"), fill=colors, bty="n")

# Gráfico 4: Comparação MRT (10 Fogs) vs. Sem Fog
barplot(rbind(MRT_sem_F, MRT_10F), beside=TRUE, col=colors, names.arg=clock, 
        ylab="Response time (s)", xlab="Time between Things requests", las=1, 
        log="y", ylim=ylim_vals, main="MRT (10 Fogs) vs. No Fog")
legend("topright", legend=c("w/o Fog", "10 Fogs"), fill=colors, bty="n")

# Gráfico 5: Comparação MRT (15 Fogs) vs. Sem Fog
barplot(rbind(MRT_sem_F, MRT_15F), beside=TRUE, col=colors, names.arg=clock, 
        ylab="Response time (s)", xlab="Time between Things requests", las=1, 
        log="y", ylim=ylim_vals, main="MRT (15 Fogs) vs. No Fog")
legend("topright", legend=c("w/o Fog", "15 Fogs"), fill=colors, bty="n")

Questão 2

library(ggplot2)

# Dados da tabela
meal_prices <- c("$10–19", "$20–29", "$30–39", "$40–49")
good <- c(53.8, 33.9, 2.6, 0.0)
very_good <- c(43.6, 54.2, 60.5, 21.4)
excellent <- c(2.6, 11.9, 36.8, 78.6)

# Criar um dataframe com os dados
data <- data.frame(
  Quality = rep(c("Good", "Very Good", "Excellent"), each = 4),
  Price = rep(meal_prices, times = 3),
  Percentage = c(good, very_good, excellent)
)

# Criar o gráfico de barras empilhadas
ggplot(data, aes(fill=Quality, y=Percentage, x=Price)) + 
  geom_bar(position="stack", stat="identity") +
  labs(
    title = "Meal Quality Rating by Price Category",
    x = "Meal Price",
    y = "Percentage",
    fill = "Quality Rating"
  ) +
  theme_minimal()

Questão 3

data("airquality")


may_temps_f <- airquality$Temp[airquality$Month == 5]


may_temps_c <- (may_temps_f - 32) / 1.8


hist(may_temps_c, 
     main = "Histograma das Temperaturas de Maio (°C)", 
     xlab = "Temperatura (°C)", 
     ylab = "Frequência",
     col = "skyblue", 
     border = "white", 
     prob = TRUE)


lines(density(may_temps_c), col = "darkblue", lwd = 2)

Questão 4

sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt", header = TRUE)

# Calcular o total de vendas por país
sales_totals <- tapply(sales$SALES, sales$COUNTRY, sum)


sales_percentages <- round(100 * sales_totals / sum(sales_totals), 1)


colors <- c("skyblue", "orange", "lightgreen", "pink", "yellow", "purple", "red", "brown")

# Criar o gráfico de pizza
pie(sales_percentages, 
    labels = paste0(sales_percentages, "%"), 
    col = colors, 
    main = "Distribuição de Vendas por País")


legend("topright", 
       legend = names(sales_totals), 
       fill = colors, 
       title = "País")

Questão 5

data("InsectSprays")

# Criar o boxplot sem outliers
boxplot(count ~ spray, 
        data = InsectSprays, 
        main = "Contagem de Insetos por Tipo de Inseticida", 
        xlab = "Tipo de Inseticida", 
        ylab = "Contagem de Insetos", 
        col = "yellow", 
        outline = FALSE)

Questão 6

Questão 7

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
library(plotly)
## 
## 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_data <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)

# Filtrar conteúdos com apenas um país de origem e remover países vazios
netflix_single_country <- netflix_data %>%
  filter(!is.na(country) & country != "" & !grepl(",", country))

# Contar o número de conteúdos por país
country_count <- netflix_single_country %>%
  group_by(country) %>%
  summarise(count = n()) %>%
  arrange(desc(count)) %>%
  top_n(10, wt = count)  # Seleciona os 10 países com mais conteúdo

# Criar o gráfico de pizza com Plotly
fig <- plot_ly(country_count, labels = ~country, values = ~count, type = 'pie', textinfo = 'label+percent') %>%
  layout(title = 'Top 10 Países com Mais Conteúdo na Netflix')


fig

Questão 8

netflix_data <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)

# Filtrar conteúdos com apenas um país de origem e remover países vazios
netflix_single_country <- netflix_data %>%
  filter(!is.na(country) & country != "" & !grepl(",", country))

# Contar o número de conteúdos por país
country_count <- netflix_single_country %>%
  group_by(country) %>%
  summarise(count = n()) %>%
  arrange(desc(count)) %>%
  top_n(10, wt = count)  # Seleciona os 10 países com mais conteúdo

# Criar a tabela com Plotly
fig <- plot_ly(
  type = 'table',
  header = list(
    values = c('País', 'Total de Conteúdos'),
    align = c('center', 'center'),
    line = list(width = 1, color = 'black'),
    fill = list(color = 'gray'),
    font = list(color = 'white', size = 12)
  ),
  cells = list(
    values = rbind(country_count$country, country_count$count),
    align = c('center', 'center'),
    line = list(color = 'black', width = 1),
    fill = list(color = c('white', 'lightgray')),
    font = list(size = 12)
  )
)

fig

Questão 9

netflix_data <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)

# Criar uma coluna de década
netflix_data <- netflix_data %>%
  mutate(decade = floor(release_year / 10) * 10)  # Calcula a década (ex: 2001 -> 2000)

# Filtrar dados de filmes e séries
movies_data <- netflix_data %>% filter(type == "Movie")
series_data <- netflix_data %>% filter(type == "TV Show")

# Contar a quantidade de conteúdos por década
movies_count <- movies_data %>%
  group_by(decade) %>%
  summarise(count = n()) %>%
  arrange(decade)

series_count <- series_data %>%
  group_by(decade) %>%
  summarise(count = n()) %>%
  arrange(decade)

# Criar o gráfico de linha com pontos usando Plotly
fig <- plot_ly() %>%
  add_trace(x = ~movies_count$decade, y = ~movies_count$count, type = 'scatter', mode = 'lines+markers',
            name = 'Filmes', line = list(color = 'yellow')) %>%
  add_trace(x = ~series_count$decade, y = ~series_count$count, type = 'scatter', mode = 'lines+markers',
            name = 'Séries', line = list(color = 'blue')) %>%
  layout(title = 'Quantidade de Conteúdo por Década no Netflix',
         xaxis = list(title = 'Década'),
         yaxis = list(title = 'Quantidade de Conteúdo'))

fig

Questão 10

# Carregar as bibliotecas necessárias
library(dplyr)
library(plotly)

# Carregar o dataset (substitua 'netflix_titles.csv' pelo caminho correto do seu arquivo)
netflix_data <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)

# Filtrar filmes lançados entre 2000 e 2010
movies_2000_2010 <- netflix_data %>%
  filter(type == "Movie" & release_year >= 2001 & release_year <= 2009)

# Extrair o primeiro gênero da coluna "listed_in"
movies_2000_2010 <- movies_2000_2010 %>%
  mutate(primary_genre = sapply(strsplit(listed_in, ", "), `[`, 1))

# Substituir os gêneros em inglês por português
movies_2000_2010 <- movies_2000_2010 %>%
  mutate(primary_genre = recode(primary_genre,
                                "Dramas" = "Dramas",
                                "Action & Adventure" = "Ação e Aventura",
                                "Comedies" = "Comédia"))

# Definir a ordem dos fatores para "primary_genre"
movies_2000_2010$primary_genre <- factor(movies_2000_2010$primary_genre, 
                                         levels = c("Dramas", "Ação e Aventura", "Comédia"))

# Filtrar para os gêneros de interesse
selected_genres <- c("Dramas", "Ação e Aventura", "Comédia")
movies_filtered <- movies_2000_2010 %>%
  filter(primary_genre %in% selected_genres)

# Contar a quantidade de filmes por gênero para cada ano
movies_count <- movies_filtered %>%
  group_by(release_year, primary_genre) %>%
  summarise(count = n()) %>%
  arrange(release_year)
## `summarise()` has grouped output by 'release_year'. You can override using the
## `.groups` argument.
# Criar o gráfico de barras lado a lado usando Plotly
fig <- plot_ly(movies_count, x = ~release_year, y = ~count, color = ~primary_genre, 
               colors = c("Dramas" = "blue", 
                          "Ação e Aventura" = "orange",  
                          "Comédia" = "#32CD32"),          
               type = 'bar') %>%
  layout(barmode = 'group',
         title = 'Quantidade de Filmes por Gênero (2000-2010)',
         xaxis = list(title = 'Ano de Lançamento'),
         yaxis = list(title = 'Quantidade de Filmes'),
         legend = list(title = list(text = 'Gênero')))

# Mostrar o gráfico
fig