A continuacion se muestran las diferentes graficas que se quieren llegar a cumplir como objetivo de la tarea:

Imagen de referencia de trabajo
Imagen de referencia de trabajo

A continuacion se muestran las graficas logradas por el estudiante, posteriormente se mostrara el codigo y cada una de las graficas previamente mostradas.

Imagen final de trabajo
Imagen final de trabajo

carga de datos

library(ggplot2)
library(pdftools)
library(dplyr)
library(gridExtra)
library(treemapify)
library(knitr)

data <- all.weeks.global

filtracion de la grafica del mosaico


# Convertir la columna V6 a numérico
data$V6 <- as.numeric(data$V6)
Warning: NAs introduced by coercion
# Filtrar los datos no numéricos en V6 (opcional)
data <- data[!is.na(data$V6), ]

# Sumar las horas vistas por cada categoría en V2
frecuencia <- data %>%
  group_by(V2) %>%
  summarise(total_hours = sum(V6)) %>%
  ungroup()

# Crear el treemap
p1<-ggplot(frecuencia, aes(area = total_hours, fill = V2, label = V2)) +
  geom_treemap() +
  geom_treemap_text(place = "centre", colour = "black", alpha = 0.7, min.size = 0) +
  labs(title = "Horas vistas por Categoría")
print(p1)

filtracion de informacion de top 5 shows vistos

# Filtrar data
filtered_data <- data %>%
  filter(V2 %in% c("TV (English)", "TV (Non-English)")) %>%
  mutate(V6 = as.numeric(V6))

# Resumir los datos por serie (V4) y temporada (V5)
summarized_data <- filtered_data %>%
  group_by(V4, V5) %>%
  summarise(total_hours = sum(V6), .groups = "drop") %>%
  arrange(desc(total_hours)) %>%
  top_n(5)
Selecting by total_hours
# Imprimir la tabla
kable(summarized_data, caption = "Top 5 Series y Temporadas por Horas Vistas")
Top 5 Series y Temporadas por Horas Vistas
V4 V5 total_hours
Squid Game Squid Game: Season 1 2315500000
Stranger Things Stranger Things 4 1887310000
Wednesday Wednesday: Season 1 1806850000
DAHMER DAHMER: Monster: The Jeffrey Dahmer Story 962470000
Money Heist Money Heist: Part 5 905230000
NA

filtracion de la primera grafica

show_name <- "Squid Game"
season_name <- "Squid Game: Season 1"

show_data <- data %>%
  filter(V4 == show_name & V2 == "TV (Non-English)" & V5 == season_name & !is.na(V1) & !is.na(V6))

show_data$V3 <- as.numeric(as.character(show_data$V3))
show_data$V6 <- as.numeric(as.character(show_data$V6))
show_data$V6_million <- show_data$V6 / 1000000

#grafica de vistas por millon 
bar_plot <- ggplot(show_data, aes(x = factor(V1), y = V6_million)) +
  geom_bar(stat = "identity", fill="red") +
  labs(x = "Semanas", y = "Millones de Vistas", title = paste("Vistas Semanales del", show_name, " ,temporada: ", season_name)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))


#grafica de weekly rank
line_plot <- ggplot(show_data, aes(x = V1, y = V3, group = 1)) +
  geom_line(color = "red") +
  labs(x = "Semanas", y = "Weekly Rank", title = paste("Weekly Rank del",show_name, " ,temporada: ", season_name)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

grid.arrange(bar_plot, line_plot, ncol = 1)

filtracion de la segunda grafica

show_name <- "Stranger Things"
seasons <- c("N/A", "Stranger Things 2", "Stranger Things 3", "Stranger Things 4")
show_data <- data %>%
  filter(V4 == show_name & V2 == "TV (English)" & V5 %in% seasons & !is.na(V1) & !is.na(V6))

show_data$V3 <- as.numeric(as.character(show_data$V3))
show_data$V6 <- as.numeric(as.character(show_data$V6))
show_data$V6_million <- show_data$V6 / 1000000

# Gráfica de vistas por millón
bar_plot <- ggplot(show_data, aes(x = factor(V1), y = V6_million, fill = V5)) +
  geom_bar(stat = "identity") +
  labs(x = "Semanas", y = "Millones de Vistas", title = paste("Vistas Semanales del", show_name)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

# Gráfica de ranking semanal
line_plot <- ggplot(show_data, aes(x = V1, y = V3, group = V5, color = V5)) +
  geom_line() +
  labs(x = "Semanas", y = "Weekly Rank", title = paste("Weekly Rank del", show_name)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

grid.arrange(bar_plot, line_plot, ncol = 1)

filtracion de la tercera grafica

show_name <- "Stranger Things"
seasons <- c("N/A")
show_data <- data %>%
  filter(V4 == show_name & V2 == "TV (English)" & V5 %in% seasons & !is.na(V1) & !is.na(V6))

show_data$V3 <- as.numeric(as.character(show_data$V3))
show_data$V6 <- as.numeric(as.character(show_data$V6))
show_data$V6_million <- show_data$V6 / 1000000

# Assignar colores a cada temporada
season_colors <- c("N/A" = "red")

# Gráfica de vistas por millón
bar_plot2 <- ggplot(show_data, aes(x = factor(V1), y = V6_million, fill = V5)) +
  geom_bar(stat = "identity") +
  labs(x = "Semanas", y = "Millones de Vistas", title = paste("Vistas Semanales del", show_name)) +
  scale_fill_manual(values = season_colors) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

# Gráfica de ranking semanal
line_plot2 <- ggplot(show_data, aes(x = V1, y = V3, group = V5, color = V5)) +
  geom_line() +
  labs(x = "Semanas", y = "Weekly Rank", title = paste("Weekly Rank del", show_name)) +
  scale_color_manual(values = season_colors) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

grid.arrange(bar_plot2, line_plot2, ncol = 1)

LS0tDQp0aXRsZTogIlRhcmVhIDIgc2FtaXIgY2FicmVyYSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkEgY29udGludWFjaW9uIHNlIG11ZXN0cmFuIGxhcyBkaWZlcmVudGVzIGdyYWZpY2FzIHF1ZSBzZSBxdWllcmVuIGxsZWdhciBhIGN1bXBsaXIgY29tbyBvYmpldGl2byBkZSBsYSB0YXJlYTogDQoNCiFbSW1hZ2VuIGRlIHJlZmVyZW5jaWEgZGUgdHJhYmFqb10odGFibGEucG5nKQ0KDQpBIGNvbnRpbnVhY2lvbiBzZSBtdWVzdHJhbiBsYXMgZ3JhZmljYXMgbG9ncmFkYXMgcG9yIGVsIGVzdHVkaWFudGUsIHBvc3Rlcmlvcm1lbnRlIHNlIG1vc3RyYXJhIGVsIGNvZGlnbyB5IGNhZGEgdW5hIGRlIGxhcyBncmFmaWNhcyBwcmV2aWFtZW50ZSBtb3N0cmFkYXMuIA0KDQohW0ltYWdlbiBmaW5hbCBkZSB0cmFiYWpvXShzYW1pLTEucG5nKQ0KDQoNCg0KDQpjYXJnYSBkZSBkYXRvcw0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShncmlkRXh0cmEpDQpsaWJyYXJ5KHRyZWVtYXBpZnkpDQpsaWJyYXJ5KGtuaXRyKQ0KDQpkYXRhIDwtIGFsbC53ZWVrcy5nbG9iYWwNCmBgYA0KDQoNCg0KDQoNCg0KZmlsdHJhY2lvbiBkZSBsYSBncmFmaWNhIGRlbCBtb3NhaWNvDQpgYGB7cn0NCg0KIyBDb252ZXJ0aXIgbGEgY29sdW1uYSBWNiBhIG51bcOpcmljbw0KZGF0YSRWNiA8LSBhcy5udW1lcmljKGRhdGEkVjYpDQoNCiMgRmlsdHJhciBsb3MgZGF0b3Mgbm8gbnVtw6lyaWNvcyBlbiBWNiAob3BjaW9uYWwpDQpkYXRhIDwtIGRhdGFbIWlzLm5hKGRhdGEkVjYpLCBdDQoNCiMgU3VtYXIgbGFzIGhvcmFzIHZpc3RhcyBwb3IgY2FkYSBjYXRlZ29yw61hIGVuIFYyDQpmcmVjdWVuY2lhIDwtIGRhdGEgJT4lDQogIGdyb3VwX2J5KFYyKSAlPiUNCiAgc3VtbWFyaXNlKHRvdGFsX2hvdXJzID0gc3VtKFY2KSkgJT4lDQogIHVuZ3JvdXAoKQ0KDQojIENyZWFyIGVsIHRyZWVtYXANCnAxPC1nZ3Bsb3QoZnJlY3VlbmNpYSwgYWVzKGFyZWEgPSB0b3RhbF9ob3VycywgZmlsbCA9IFYyLCBsYWJlbCA9IFYyKSkgKw0KICBnZW9tX3RyZWVtYXAoKSArDQogIGdlb21fdHJlZW1hcF90ZXh0KHBsYWNlID0gImNlbnRyZSIsIGNvbG91ciA9ICJibGFjayIsIGFscGhhID0gMC43LCBtaW4uc2l6ZSA9IDApICsNCiAgbGFicyh0aXRsZSA9ICJIb3JhcyB2aXN0YXMgcG9yIENhdGVnb3LDrWEiKQ0KcHJpbnQocDEpDQpgYGANCmZpbHRyYWNpb24gZGUgaW5mb3JtYWNpb24gZGUgdG9wIDUgc2hvd3MgdmlzdG9zDQpgYGB7cn0NCiMgRmlsdHJhciBkYXRhDQpmaWx0ZXJlZF9kYXRhIDwtIGRhdGEgJT4lDQogIGZpbHRlcihWMiAlaW4lIGMoIlRWIChFbmdsaXNoKSIsICJUViAoTm9uLUVuZ2xpc2gpIikpICU+JQ0KICBtdXRhdGUoVjYgPSBhcy5udW1lcmljKFY2KSkNCg0KIyBSZXN1bWlyIGxvcyBkYXRvcyBwb3Igc2VyaWUgKFY0KSB5IHRlbXBvcmFkYSAoVjUpDQpzdW1tYXJpemVkX2RhdGEgPC0gZmlsdGVyZWRfZGF0YSAlPiUNCiAgZ3JvdXBfYnkoVjQsIFY1KSAlPiUNCiAgc3VtbWFyaXNlKHRvdGFsX2hvdXJzID0gc3VtKFY2KSwgLmdyb3VwcyA9ICJkcm9wIikgJT4lDQogIGFycmFuZ2UoZGVzYyh0b3RhbF9ob3VycykpICU+JQ0KICB0b3Bfbig1KQ0KDQojIEltcHJpbWlyIGxhIHRhYmxhDQprYWJsZShzdW1tYXJpemVkX2RhdGEsIGNhcHRpb24gPSAiVG9wIDUgU2VyaWVzIHkgVGVtcG9yYWRhcyBwb3IgSG9yYXMgVmlzdGFzIikNCg0KYGBgDQoNCmZpbHRyYWNpb24gZGUgbGEgcHJpbWVyYSBncmFmaWNhDQpgYGB7cn0NCnNob3dfbmFtZSA8LSAiU3F1aWQgR2FtZSINCnNlYXNvbl9uYW1lIDwtICJTcXVpZCBHYW1lOiBTZWFzb24gMSINCg0Kc2hvd19kYXRhIDwtIGRhdGEgJT4lDQogIGZpbHRlcihWNCA9PSBzaG93X25hbWUgJiBWMiA9PSAiVFYgKE5vbi1FbmdsaXNoKSIgJiBWNSA9PSBzZWFzb25fbmFtZSAmICFpcy5uYShWMSkgJiAhaXMubmEoVjYpKQ0KDQpzaG93X2RhdGEkVjMgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoc2hvd19kYXRhJFYzKSkNCnNob3dfZGF0YSRWNiA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihzaG93X2RhdGEkVjYpKQ0Kc2hvd19kYXRhJFY2X21pbGxpb24gPC0gc2hvd19kYXRhJFY2IC8gMTAwMDAwMA0KDQojZ3JhZmljYSBkZSB2aXN0YXMgcG9yIG1pbGxvbiANCmJhcl9wbG90IDwtIGdncGxvdChzaG93X2RhdGEsIGFlcyh4ID0gZmFjdG9yKFYxKSwgeSA9IFY2X21pbGxpb24pKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsPSJyZWQiKSArDQogIGxhYnMoeCA9ICJTZW1hbmFzIiwgeSA9ICJNaWxsb25lcyBkZSBWaXN0YXMiLCB0aXRsZSA9IHBhc3RlKCJWaXN0YXMgU2VtYW5hbGVzIGRlbCIsIHNob3dfbmFtZSwgIiAsdGVtcG9yYWRhOiAiLCBzZWFzb25fbmFtZSkpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMSkpDQoNCg0KI2dyYWZpY2EgZGUgd2Vla2x5IHJhbmsNCmxpbmVfcGxvdCA8LSBnZ3Bsb3Qoc2hvd19kYXRhLCBhZXMoeCA9IFYxLCB5ID0gVjMsIGdyb3VwID0gMSkpICsNCiAgZ2VvbV9saW5lKGNvbG9yID0gInJlZCIpICsNCiAgbGFicyh4ID0gIlNlbWFuYXMiLCB5ID0gIldlZWtseSBSYW5rIiwgdGl0bGUgPSBwYXN0ZSgiV2Vla2x5IFJhbmsgZGVsIixzaG93X25hbWUsICIgLHRlbXBvcmFkYTogIiwgc2Vhc29uX25hbWUpKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkNCg0KZ3JpZC5hcnJhbmdlKGJhcl9wbG90LCBsaW5lX3Bsb3QsIG5jb2wgPSAxKQ0KYGBgDQoNCmZpbHRyYWNpb24gZGUgbGEgc2VndW5kYSBncmFmaWNhDQpgYGB7cn0NCnNob3dfbmFtZSA8LSAiU3RyYW5nZXIgVGhpbmdzIg0Kc2Vhc29ucyA8LSBjKCJOL0EiLCAiU3RyYW5nZXIgVGhpbmdzIDIiLCAiU3RyYW5nZXIgVGhpbmdzIDMiLCAiU3RyYW5nZXIgVGhpbmdzIDQiKQ0Kc2hvd19kYXRhIDwtIGRhdGEgJT4lDQogIGZpbHRlcihWNCA9PSBzaG93X25hbWUgJiBWMiA9PSAiVFYgKEVuZ2xpc2gpIiAmIFY1ICVpbiUgc2Vhc29ucyAmICFpcy5uYShWMSkgJiAhaXMubmEoVjYpKQ0KDQpzaG93X2RhdGEkVjMgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoc2hvd19kYXRhJFYzKSkNCnNob3dfZGF0YSRWNiA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihzaG93X2RhdGEkVjYpKQ0Kc2hvd19kYXRhJFY2X21pbGxpb24gPC0gc2hvd19kYXRhJFY2IC8gMTAwMDAwMA0KDQojIEdyw6FmaWNhIGRlIHZpc3RhcyBwb3IgbWlsbMOzbg0KYmFyX3Bsb3QgPC0gZ2dwbG90KHNob3dfZGF0YSwgYWVzKHggPSBmYWN0b3IoVjEpLCB5ID0gVjZfbWlsbGlvbiwgZmlsbCA9IFY1KSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBsYWJzKHggPSAiU2VtYW5hcyIsIHkgPSAiTWlsbG9uZXMgZGUgVmlzdGFzIiwgdGl0bGUgPSBwYXN0ZSgiVmlzdGFzIFNlbWFuYWxlcyBkZWwiLCBzaG93X25hbWUpKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdCA9IDEpKQ0KDQojIEdyw6FmaWNhIGRlIHJhbmtpbmcgc2VtYW5hbA0KbGluZV9wbG90IDwtIGdncGxvdChzaG93X2RhdGEsIGFlcyh4ID0gVjEsIHkgPSBWMywgZ3JvdXAgPSBWNSwgY29sb3IgPSBWNSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBsYWJzKHggPSAiU2VtYW5hcyIsIHkgPSAiV2Vla2x5IFJhbmsiLCB0aXRsZSA9IHBhc3RlKCJXZWVrbHkgUmFuayBkZWwiLCBzaG93X25hbWUpKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdCA9IDEpKQ0KDQpncmlkLmFycmFuZ2UoYmFyX3Bsb3QsIGxpbmVfcGxvdCwgbmNvbCA9IDEpDQoNCmBgYA0KZmlsdHJhY2lvbiBkZSBsYSB0ZXJjZXJhIGdyYWZpY2ENCmBgYHtyfQ0Kc2hvd19uYW1lIDwtICJTdHJhbmdlciBUaGluZ3MiDQpzZWFzb25zIDwtIGMoIk4vQSIpDQpzaG93X2RhdGEgPC0gZGF0YSAlPiUNCiAgZmlsdGVyKFY0ID09IHNob3dfbmFtZSAmIFYyID09ICJUViAoRW5nbGlzaCkiICYgVjUgJWluJSBzZWFzb25zICYgIWlzLm5hKFYxKSAmICFpcy5uYShWNikpDQoNCnNob3dfZGF0YSRWMyA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihzaG93X2RhdGEkVjMpKQ0Kc2hvd19kYXRhJFY2IDwtIGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHNob3dfZGF0YSRWNikpDQpzaG93X2RhdGEkVjZfbWlsbGlvbiA8LSBzaG93X2RhdGEkVjYgLyAxMDAwMDAwDQoNCiMgQXNzaWduYXIgY29sb3JlcyBhIGNhZGEgdGVtcG9yYWRhDQpzZWFzb25fY29sb3JzIDwtIGMoIk4vQSIgPSAicmVkIikNCg0KIyBHcsOhZmljYSBkZSB2aXN0YXMgcG9yIG1pbGzDs24NCmJhcl9wbG90MiA8LSBnZ3Bsb3Qoc2hvd19kYXRhLCBhZXMoeCA9IGZhY3RvcihWMSksIHkgPSBWNl9taWxsaW9uLCBmaWxsID0gVjUpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGxhYnMoeCA9ICJTZW1hbmFzIiwgeSA9ICJNaWxsb25lcyBkZSBWaXN0YXMiLCB0aXRsZSA9IHBhc3RlKCJWaXN0YXMgU2VtYW5hbGVzIGRlbCIsIHNob3dfbmFtZSkpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gc2Vhc29uX2NvbG9ycykgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3QgPSAxKSkNCg0KIyBHcsOhZmljYSBkZSByYW5raW5nIHNlbWFuYWwNCmxpbmVfcGxvdDIgPC0gZ2dwbG90KHNob3dfZGF0YSwgYWVzKHggPSBWMSwgeSA9IFYzLCBncm91cCA9IFY1LCBjb2xvciA9IFY1KSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGxhYnMoeCA9ICJTZW1hbmFzIiwgeSA9ICJXZWVrbHkgUmFuayIsIHRpdGxlID0gcGFzdGUoIldlZWtseSBSYW5rIGRlbCIsIHNob3dfbmFtZSkpICsNCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHNlYXNvbl9jb2xvcnMpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMSkpDQoNCmdyaWQuYXJyYW5nZShiYXJfcGxvdDIsIGxpbmVfcGxvdDIsIG5jb2wgPSAxKQ0KYGBg