| No. | judul film | genre | zona rilis | bulan rilis | jumlah penonton | rating IMDb |
|---|---|---|---|---|---|---|
| 1 | Jumbo | Animasi | Lebaran | April | 10.2 | 7.8 |
| 2 | Agak Laen : Menyala Pantiku! | Komedi | Natal/Tahun Baru | November | 9.5 | 7.4 |
| 3 | Pabrik Gula | Horor | Lebaran | Maret | 4.7 | 6.4 |
| 4 | Petak Gunung Gede | Horor | Regular | Februari | 3.2 | 6.2 |
| 5 | Sore : Istri Dari Masa Depan | Drama - Romansa | Regular | Juli | 3.1 | 7.6 |
| 6 | Komang | Drama - Romansa | Lebaran | Maret | 3.0 | 7.1 |
| 7 | Jalan Pulang | Horor | Regular | Agustus | 2.8 | 6.3 |
| 8 | Kang Solah From Kang Mak x Nenek Gayung | Komedi - Horor | Natal/Tahun Baru | Oktober | 2.5 | 6.5 |
| 9 | Qodrat 2 | Horor | Lebaran | Maret | 2.2 | 6.8 |
| 10 | Pengepungan di Bukit Duri | Thriller | Regular | September | 1.8 | 6.5 |
| 11 | KKN di Desa Penari | Horor | Lebaran | Mei | 10.0 | 6.5 |
| 12 | Dilan 1991 | Drama - Romansa | Natal/Tahun Baru | Februari | 5.2 | 7.0 |
| 13 | Miracel In Cell No.7 | Drama - Keluarga | Regular | September | 5.8 | 7.5 |
| 14 | Pengabdi Setan | Horor | Regular | September | 4.2 | 6.7 |
| 15 | Sewu Dino | Horor | Lebaran | April | 4.9 | 6.3 |
| 16 | Habibi dan Ainun | Drama | Natal/Tahun Baru | Desemberr | 4.5 | 7.6 |
| 17 | Ayat - ayat Cinta | Drama - Romansa | Regular | Februari | 3.7 | 7.2 |
| 18 | Laskar Pelangi | Drama | Regular | September | 4.6 | 8.0 |
| 19 | Warkop DKI Reborn | Komedi | Regular | September | 6.8 | 6.1 |
| 20 | Gundala | Action | Regular | Agustus | 1.7 | 6.2 |
film <- data_film$`judul film`
penonton <- data_film$`jumlah penonton`
rating <- data_film$`rating IMDb`stat_desc <- data.frame(
Ukuran = c("Mean (x̄)", "Median", "Modus", "Kuartil 1 (Q1)", "Kuartil 3 (Q3)",
"Range (R)", "Varians (s²)", "Std. Deviasi (s)"),
Nilai = c(
round(mean(penonton), 3),
round(median(penonton), 3),
as.numeric(names(sort(table(penonton), decreasing = TRUE)[1])),
round(quantile(penonton, 0.25), 3),
round(quantile(penonton, 0.75), 3),
round(max(penonton) - min(penonton), 3),
round(var(penonton), 3),
round(sd(penonton), 3)
)
)
stat_desc %>%
kbl(align = c("l", "c"), col.names = c("Ukuran Statistik", "Nilai")) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "bordered"),
full_width = TRUE
) %>%
row_spec(0, bold = TRUE, color = "white", background = "#2c3e50") %>%
row_spec(c(1, 3, 5, 7), background = "#2a2a2a", color = "white") %>%
row_spec(c(2, 4, 6, 8), background = "#323232", color = "white") %>%
column_spec(2, bold = TRUE, color = "#5dade2")| Ukuran Statistik | Nilai |
|---|---|
| Mean (x̄) | 4.720 |
| Median | 4.350 |
| Modus | 1.700 |
| Kuartil 1 (Q1) | 2.950 |
| Kuartil 3 (Q3) | 5.350 |
| Range (R) | 8.500 |
| Varians (s²) | 6.757 |
| Std. Deviasi (s) | 2.600 |
persen <- round((penonton / sum(penonton)) * 100)
data_plot <- data.frame(film, penonton, persen, rating)
data_plot %>%
kbl(align = c("l", "c", "c", "c"),
col.names = c("Judul Film", "Penonton (juta)", "Persentase (%)", "Rating IMDb")) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "bordered"),
full_width = TRUE
) %>%
row_spec(0, bold = TRUE, color = "white", background = "#2c3e50") %>%
row_spec(1:20, color = "white") %>%
column_spec(2:4, bold = TRUE, color = "#5dade2")| Judul Film | Penonton (juta) | Persentase (%) | Rating IMDb |
|---|---|---|---|
| Jumbo | 10.2 | 11 | 7.8 |
| Agak Laen : Menyala Pantiku! | 9.5 | 10 | 7.4 |
| Pabrik Gula | 4.7 | 5 | 6.4 |
| Petak Gunung Gede | 3.2 | 3 | 6.2 |
| Sore : Istri Dari Masa Depan | 3.1 | 3 | 7.6 |
| Komang | 3.0 | 3 | 7.1 |
| Jalan Pulang | 2.8 | 3 | 6.3 |
| Kang Solah From Kang Mak x Nenek Gayung | 2.5 | 3 | 6.5 |
| Qodrat 2 | 2.2 | 2 | 6.8 |
| Pengepungan di Bukit Duri | 1.8 | 2 | 6.5 |
| KKN di Desa Penari | 10.0 | 11 | 6.5 |
| Dilan 1991 | 5.2 | 6 | 7.0 |
| Miracel In Cell No.7 | 5.8 | 6 | 7.5 |
| Pengabdi Setan | 4.2 | 4 | 6.7 |
| Sewu Dino | 4.9 | 5 | 6.3 |
| Habibi dan Ainun | 4.5 | 5 | 7.6 |
| Ayat - ayat Cinta | 3.7 | 4 | 7.2 |
| Laskar Pelangi | 4.6 | 5 | 8.0 |
| Warkop DKI Reborn | 6.8 | 7 | 6.1 |
| Gundala | 1.7 | 2 | 6.2 |
data_plot$label_legenda <- paste0(data_plot$film, " (", data_plot$persen, "%)")
jumlah_film <- nrow(data_plot)
my_palette <- colorRampPalette(brewer.pal(12, "Paired"))(jumlah_film)
ggplot(data_plot, aes(x = "", y = penonton,
fill = reorder(label_legenda, -penonton))) +
geom_bar(stat = "identity", width = 1, color = "white", linewidth = 0.3) +
coord_polar("y") +
scale_fill_manual(values = my_palette) +
geom_text(aes(label = paste0(persen, "%")),
position = position_stack(vjust = 0.5),
size = 4, fontface = "bold") +
labs(title = "Persentase Penonton Film Indonesia",
fill = "Judul Film & Persentase Penonton") +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, size = 26, face = "bold",
margin = margin(b = 20)),
legend.position = "bottom",
legend.title = element_text(face = "bold", size = 20, margin = margin(b = 10)),
legend.text = element_text(size = 14, face = "bold"),
legend.key.size = unit(1.2, "cm"),
legend.spacing.x = unit(0.5, "cm"),
plot.margin = margin(1, 1, 1, 1, "cm")
) +
guides(fill = guide_legend(title.position = "top", title.hjust = 0.5,
ncol = 4, byrow = TRUE))Pie chart di atas menunjukkan persentase jumlah penonton dari setiap film Indonesia dalam data yang telah kita analisis. Setiap bagian dalam lingkaran tersebut merepresentasikan kontribusi jumlah penonton suatu film terhadap total keseluruhan penonton.
ggplot(data_plot, aes(x = reorder(film, -penonton), y = penonton,
fill = penonton)) +
geom_col(show.legend = FALSE) +
scale_fill_gradient(low = "#85c1e9", high = "#1a5276") +
geom_text(aes(label = paste0(persen, "%")),
vjust = -0.5, size = 3, fontface = "bold", color = "#2c3e50") +
labs(title = "Diagram Jumlah Penonton Film",
x = "Judul Film",
y = "Jumlah Penonton (juta)") +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, color = "black"),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)Bar chart di atas menunjukkan perbandingan volume penonton antar judul film. Di sini terlihat bahwa film yang paling diminati adalah film Jumbo dibandingkan film lainnya.
ggplot(data_plot, aes(x = penonton, y = reorder(film, penonton))) +
geom_segment(aes(xend = 0, yend = reorder(film, penonton)),
color = "grey80", linewidth = 0.6) +
geom_point(size = 4, color = "#e74c3c") +
geom_text(aes(label = paste0(penonton, " jt | ", persen, "%")),
hjust = -0.1, size = 3, color = "#2c3e50") +
labs(title = "Dot Plot Jumlah Penonton Film",
x = "Jumlah Penonton (juta)",
y = "Judul Film") +
theme_bw() +
theme(
axis.text.y = element_text(face = "bold", size = 9)
)Dot plot menampilkan posisi titik-titik yang mendefinisikan banyaknya jumlah penonton dari setiap film. Terlihat juga adanya pengelompokan penonton pada kisaran angka tertentu. Dot plot di atas yang termasuk sekelompok adalah film Gundala, Pengepungan di Bukit Duri, Qodrat, dan Kang Solah yang berada di kelompok terendah yaitu kisaran 1–2,5 juta.
##
## The decimal point is at the |
##
## 1 | 78
## 2 | 258
## 3 | 0127
## 4 | 25679
## 5 | 28
## 6 | 8
## 7 |
## 8 |
## 9 | 5
## 10 | 02
Pada bagian plot ini menyajikan distribusi frekuensi tapi tetap mempertahankan nilai asli data itu sendiri. Kita dapat melihat di sini sebagian besar film memiliki jumlah penonton pada digit awalnya.
ggplot(data_plot, aes(x = penonton)) +
geom_histogram(bins = 3, fill = "#3498db", color = "white", alpha = 0.85) +
labs(title = "Histogram Jumlah Penonton Film",
x = "Jumlah Penonton (juta)",
y = "Frekuensi") +
theme_minimal() +
theme(panel.grid.minor = element_blank())Histogram menggambarkan kepadatan jumlah penonton dalam rentang (bin) tertentu. Mayoritas film dalam data ini memiliki jumlah penonton berkisar antara 4 sampai 8 juta penonton.
mean_penonton <- mean(penonton)
ggplot(data_plot, aes(x = penonton)) +
geom_density(fill = "lightgreen", alpha = 0.6, color = "#27ae60", linewidth = 1) +
geom_vline(xintercept = mean_penonton, color = "#e74c3c",
linetype = "dashed", linewidth = 0.9) +
annotate("text",
x = mean_penonton + 0.3,
y = 0.02,
label = paste0("Mean = ", round(mean_penonton, 1)),
color = "#e74c3c", hjust = 0, fontface = "bold", size = 3.8) +
labs(title = "Density Plot Jumlah Penonton Film",
x = "Jumlah Penonton (juta)",
y = "Density") +
theme_classic()Density plot ini menyajikan hampir sama seperti histogram tapi lebih halus. Puncak kurva di atas menunjukkan jumlah penonton yang paling sering muncul pada data. Garis merah putus-putus menandai posisi nilai rata-rata (mean).
data_box <- data.frame(
penonton = penonton,
rating = rating
)
data_long <- pivot_longer(data_box,
cols = everything(),
names_to = "variabel",
values_to = "nilai")
ggplot(data_long, aes(x = variabel, y = nilai, fill = variabel)) +
geom_boxplot(alpha = 0.8, outlier.shape = 21, outlier.size = 3,
outlier.color = "#e74c3c", outlier.fill = "#e74c3c") +
scale_fill_manual(values = c("penonton" = "#3498db", "rating" = "#f39c12")) +
labs(title = "Box Plot Jumlah Penonton dan Rating IMDb",
x = "Variabel",
y = "Nilai") +
theme_minimal() +
theme(legend.position = "none")Box plot ini membandingkan distribusi antara jumlah penonton dan rating IMDb. Pada kolom penonton terlihat adanya titik di luar garis yang mengartikan bahwa adanya film yang sangat sukses secara luar biasa dibanding rata-rata.
IMDb. (2025). Jumbo – Full Cast & Crew, Rating & Reviews. Internet Movie Database. https://www.imdb.com/title/tt33479839/
Wikipedia. (2025). Daftar Film Indonesia Terlaris Sepanjang Masa. Wikimedia Foundation. https://id.wikipedia.org/wiki/Daftar_film_Indonesia_terlaris_sepanjang_masa
CNN Indonesia. (2025). Daftar 10 Film Indonesia Terlaris 2025. CNN Indonesia. https://www.cnnindonesia.com/hiburan/20251212154034-220-1306024/daftar-10-film-indonesia-terlaris-2025