library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.6.1
# 1. Parameter Utama
mu <- 0
sigma <- 1
# 2. Membuat Data Frame Halus (1000 titik sampel dari mu - 4*sigma s.d. mu + 4*sigma)
x_vals <- seq(mu - 4 * sigma, mu + 4 * sigma, length.out = 1000)
df_norm <- data.frame(
x = x_vals,
y = dnorm(x_vals, mean = mu, sd = sigma)
)
# 3. Membuat Grafik dengan ggplot2
ggplot(df_norm, aes(x = x, y = y)) +
# Layer 1: Isian transparan di bawah kurva
geom_area(fill = "#3B82F6", alpha = 0.2) +
# Layer 2: Garis utama kurva distribusinya
geom_line(color = "#1D4ED8", linewidth = 1.2) +
# Layer 3: Garis vertikal penanda Rata-Rata / Mean (mu = 10)
geom_vline(xintercept = mu, linetype = "dashed", color = "#EF4444", linewidth = 0.9) +
# Layer 4: Garis titik-titik penanda Batas 1 Standar Deviasi (mu - sigma dan mu + sigma)
geom_vline(xintercept = c(mu - sigma, mu + sigma), linetype = "dotted", color = "#6B7280", linewidth = 0.7) +
# Layer 5: Anotasi Teks di dalam Plot
annotate("text", x = mu + 0.25, y = dnorm(mu, mu, sigma) * 0.95,
label = paste0("Mean (\u03bc) = ", mu), color = "#EF4444", fontface = "bold", hjust = 0) +
annotate("text", x = mu + sigma + 0.2, y = dnorm(mu + sigma, mu, sigma),
label = paste0("+1\u03c3 (", mu + sigma, ")"), color = "#4B5563", size = 3.5, hjust = 0) +
annotate("text", x = mu - sigma - 0.2, y = dnorm(mu - sigma, mu, sigma),
label = paste0("-1\u03c3 (", mu - sigma, ")"), color = "#4B5563", size = 3.5, hjust = 1) +
# Layer 6: Pengaturan Skala dan Ticks Sumbu X & Y
scale_x_continuous(breaks = seq(mu - 4 * sigma, mu + 4 * sigma, by = sigma)) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
# Layer 7: Judul, Subjudul, dan Label Sumbu
labs(
title = "Distribusi Normal N(\u03bc = 10, \u03c3\u00b2 = 4)",
subtitle = "Fungsi Kepadatan Probabilitas (PDF) dengan Rata-rata = 10 dan Standar Deviasi = 2",
x = "Nilai Variable (X)",
y = "Kepadatan (Density)",
caption = "Dibuat dengan R & ggplot2"
) +
# Layer 8: Styling Tema Rapi
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14, color = "#111827"),
plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 12)),
axis.title = element_text(face = "bold", color = "#374151"),
axis.text = element_text(color = "#4B5563"),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_line(color = "#F3F4F6"),
panel.grid.major.y = element_line(color = "#F3F4F6")
)
# 5 Kurva Distribusi Normal dengan Nilai Mu dan Sigma
library(ggplot2)
# 1. Definisi Vektor Parameter (mu dan sigma)
mu_vals <- c(0, 2, 5, 10, 1.5)
sigma_vals <- c(1, 1, 5, 3, 0.1)
# 2. Buat Label Parameter Berurutan
label_levels <- paste0("μ = ", mu_vals, ", σ = ", sigma_vals)
# 3. Membuat Grid Nilai X yang Sangat Rapat (3000 titik agar kurva sigma = 0.1 mulus)
# Rentang X diatur dari -15 sampai 25 agar mencakup ekor distribusi terlebar (mu = 5, sigma = 5)
x_vals <- seq(-15, 25, length.out = 3000)
# 4. Generate Data Frame Gabungan (Tidy Format)
df_list <- lapply(1:length(mu_vals), function(i) {
data.frame(
x = x_vals,
y = dnorm(x_vals, mean = mu_vals[i], sd = sigma_vals[i]),
Parameter = factor(label_levels[i], levels = label_levels)
)
})
df_all <- do.call(rbind, df_list)
# 5. Palet 5 Warna kustom yang Kontras dan Elegan
palet_warna <- c(
"μ = 0, σ = 1" = "#2563EB", # Biru
"μ = 2, σ = 1" = "#059669", # Hijau
"μ = 5, σ = 5" = "#D97706", # Oranye
"μ = 10, σ = 3" = "#7C3AED", # Ungu
"μ = 1.5, σ = 0.1" = "#DC2626" # Merah
)
# 6. Visualisasi Grafik Bertumpuk dengan ggplot2
ggplot(df_all, aes(x = x, y = y, color = Parameter, fill = Parameter)) +
# Layer 1: Isian area transparan (position = "identity" agar saling bertumpuk, bukan akumulasi)
geom_area(alpha = 0.15, position = "identity") +
# Layer 2: Garis Kurva Utama
geom_line(linewidth = 1) +
# Layer 3: Pemetaan Warna kustom
scale_color_manual(values = palet_warna) +
scale_fill_manual(values = palet_warna) +
# Layer 4: Pengaturan Skala Sumbu
scale_x_continuous(breaks = seq(-15, 25, by = 5)) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
# Layer 5: Label & Judul
labs(
title = "Perbandingan 5 Distribusi Normal",
subtitle = "Visualisasi pengaruh variasi Rata-rata (\u03bc) dan Standar Deviasi (\u03c3)",
x = "Nilai Variable (X)",
y = "Kepadatan (Density)",
color = "Parameter",
fill = "Parameter",
caption = "Dibuat dengan R & ggplot2"
) +
# Layer 6: Styling Tema Publikasi
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15, color = "#111827"),
plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 14)),
axis.title = element_text(face = "bold", color = "#374151"),
axis.text = element_text(color = "#4B5563"),
# Kustomisasi Kotak Legend
legend.position = "right",
legend.title = element_text(face = "bold", size = 10),
legend.background = element_rect(fill = "#F9FAFB", color = "#E5E7EB", linewidth = 0.5),
legend.margin = margin(6, 10, 6, 10),
panel.grid.minor = element_blank(),
panel.grid.major = element_line(color = "#F3F4F6")
)
# Kurva Distribusi t, F, Chi-Square, Gamma, Weibull, Eksponensial,
Pareto
library(ggplot2)
# 1. Set data x
x_val <- seq(0.01, 10, length.out = 500)
# 2. Rumus manual Pareto Tipe I
dpareto <- function(x, xm = 1, alpha = 3) {
ifelse(x >= xm, (alpha * (xm^alpha)) / (x^(alpha + 1)), 0)
}
# 3. Gabungkan data 8 distribusi kontinu
df_all <- rbind(
data.frame(x = seq(-4, 4, length.out = 500), y = dt(seq(-4, 4, length.out = 500), df = 5), Distribusi = "t-Student (df=5)"),
data.frame(x = x_val, y = df(x_val, df1 = 5, df2 = 10), Distribusi = "F (df1=5, df2=10)"),
data.frame(x = seq(0, 15, length.out = 500), y = dchisq(seq(0, 15, length.out = 500), df = 4), Distribusi = "Chi-Square (df=4)"),
data.frame(x = x_val, y = dgamma(x_val, shape = 2, rate = 1), Distribusi = "Gamma (shape=2, rate=1)"),
data.frame(x = seq(0, 4, length.out = 500), y = dweibull(seq(0, 4, length.out = 500), shape = 2, scale = 1), Distribusi = "Weibull (shape=2, scale=1)"),
data.frame(x = seq(0, 5, length.out = 500), y = dexp(seq(0, 5, length.out = 500), rate = 1), Distribusi = "Eksponensial (rate=1)"),
data.frame(x = seq(1, 5, length.out = 500), y = dpareto(seq(1, 5, length.out = 500), xm = 1, alpha = 3), Distribusi = "Pareto (xm=1, alpha=3)"),
data.frame(x = seq(-1, 6, length.out = 500), y = dunif(seq(-1, 6, length.out = 500), min = 0, max = 5), Distribusi = "Uniform (0,5)")
)
# 4. Plot gabungan dengan Facet (dipisah per panel kecil)
ggplot(df_all, aes(x = x, y = y, color = Distribusi, fill = Distribusi)) +
geom_area(alpha = 0.25, show.legend = FALSE) +
geom_line(size = 1, show.legend = FALSE) +
facet_wrap(~ Distribusi, scales = "free", ncol = 4) + # Membagi jadi 8 kotak kecil (2 baris x 4 kolom)
labs(
title = "Perbandingan 8 Distribusi Kontinu",
x = "Nilai X",
y = "Kerapatan Probabilitas f(x)"
) +
theme_bw() +
theme(
strip.background = element_rect(fill = "#E9ECEF"),
strip.text = element_text(face = "bold", size = 9),
plot.title = element_text(face = "bold", size = 14, hjust = 0.5)
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
library(ggplot2)
# ------------------------------------------------------------
# 1. Definisi Fungsi Pareto
# ------------------------------------------------------------
dpareto <- function(x, xm = 1, alpha = 3) {
ifelse(x >= xm, (alpha * (xm^alpha)) / (x^(alpha + 1)), 0)
}
# ------------------------------------------------------------
# 2. Sumbu X Bersama (-4 sampai 15 agar mencakup semua domain)
# ------------------------------------------------------------
x_vals <- seq(-4, 15, length.out = 1000)
# ------------------------------------------------------------
# 3. Membuat Data Frame Gabungan (Tidy Format)
# ------------------------------------------------------------
df_all <- rbind(
data.frame(x = x_vals, y = dt(x_vals, df = 5), Distribusi = "t-Student (df=5)"),
data.frame(x = x_vals, y = df(x_vals, df1 = 5, df2 = 10), Distribusi = "F (df1=5, df2=10)"),
data.frame(x = x_vals, y = dchisq(x_vals, df = 4), Distribusi = "Chi-Square (df=4)"),
data.frame(x = x_vals, y = dgamma(x_vals, shape = 2, rate = 1), Distribusi = "Gamma (shape=2, rate=1)"),
data.frame(x = x_vals, y = dweibull(x_vals, shape = 2, scale = 1),Distribusi = "Weibull (shape=2, scale=1)"),
data.frame(x = x_vals, y = dexp(x_vals, rate = 1), Distribusi = "Eksponensial (rate=1)"),
data.frame(x = x_vals, y = dpareto(x_vals, xm = 1, alpha = 3), Distribusi = "Pareto (xm=1, alpha=3)"),
data.frame(x = x_vals, y = dunif(x_vals, min = 0, max = 5), Distribusi = "Uniform (min=0, max=5)")
)
# Mengunci urutan label di legenda sesuai keinginan Anda
dist_levels <- c(
"t-Student (df=5)", "F (df1=5, df2=10)", "Chi-Square (df=4)",
"Gamma (shape=2, rate=1)", "Weibull (shape=2, scale=1)",
"Eksponensial (rate=1)", "Pareto (xm=1, alpha=3)", "Uniform (min=0, max=5)"
)
df_all$Distribusi <- factor(df_all$Distribusi, levels = dist_levels)
# ------------------------------------------------------------
# 4. Palet Warna Kustom (Sesuai Hex Code Kode Asli Anda)
# ------------------------------------------------------------
palet_warna <- c(
"t-Student (df=5)" = "#4361EE",
"F (df1=5, df2=10)" = "#F72585",
"Chi-Square (df=4)" = "#4CC9F0",
"Gamma (shape=2, rate=1)" = "#7209B7",
"Weibull (shape=2, scale=1)" = "#3A0CA3",
"Eksponensial (rate=1)" = "#4895EF",
"Pareto (xm=1, alpha=3)" = "#10B981",
"Uniform (min=0, max=5)" = "#F59E0B"
)
# ------------------------------------------------------------
# 5. Visualisasi 1 Frame
# ------------------------------------------------------------
ggplot(df_all, aes(x = x, y = y, color = Distribusi, fill = Distribusi)) +
# Layer 1: Isian area transparan bertumpuk
geom_area(alpha = 0.12, position = "identity") +
# Layer 2: Garis utama kurva
geom_line(linewidth = 0.9) +
# Layer 3: Pemetaan Warna Kustom
scale_color_manual(values = palet_warna) +
scale_fill_manual(values = palet_warna) +
# Layer 4: Penyesuaian Skala
# Batasi Y hingga 1.2 agar kurva Pareto (puncak y=3) tidak memipihkan kurva lainnya
coord_cartesian(ylim = c(0, 1.2)) +
scale_x_continuous(breaks = seq(-4, 15, by = 2)) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
# Layer 5: Judul dan Label
labs(
title = "Perbandingan 8 Distribusi Kontinu",
subtitle = "Digabungkan dalam Satu Sumbu Koordinat",
x = "Nilai Variable (x)",
y = "Kepadatan Probabilitas f(x)",
color = "Jenis Distribusi",
fill = "Jenis Distribusi",
caption = "Dibuat dengan R & ggplot2"
) +
# Layer 6: Styling Tema
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15, color = "#111827"),
plot.subtitle = element_text(color = "#4B5563", margin = margin(b = 12)),
axis.title = element_text(face = "bold", color = "#374151"),
# Pengaturan Legenda di Samping
legend.position = "right",
legend.title = element_text(face = "bold", size = 10),
legend.background = element_rect(fill = "#F9FAFB", color = "#E5E7EB", linewidth = 0.5),
legend.margin = margin(6, 10, 6, 10),
panel.grid.minor = element_blank(),
panel.grid.major = element_line(color = "#F3F4F6")
)