A continuacion se muestran las diferentes graficas que se quieren
llegar a cumplir como objetivo de la tarea:
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
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
| 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