Analisis terhadap 53,940 data berlian mengungkap pola kategorik yang jelas dalam kualitas potongan, grade warna, dan klasifikasi kejernihan. Laporan ini menyediakan insight yang actionable untuk strategi inventori dan positioning pasar.
Temuan Kritis:
Cakupan Dataset:
| Metrik | Nilai |
|---|---|
| Total Data | 53,940 |
| Variabel Kategorik | 3 (Cut, Color, Clarity) |
| Kategori Cut | 5 level |
| Grade Warna | 7 level (D-J) |
| Level Clarity | 8 level (I1-IF) |
# Color scheme: highlight top 2
cut_colors <- c(
"Ideal" = "#2E7D32", # Green - #1
"Premium" = "#1976D2", # Blue - #2
"Very Good" = "#9E9E9E", # Gray
"Good" = "#BDBDBD", # Light gray
"Fair" = "#E0E0E0" # Very light gray
)
ggplot(diamonds, aes(x = reorder(cut, cut, function(x) -length(x)), fill = cut)) +
geom_bar(width = 0.65) +
geom_text(
stat = "count",
aes(label = paste0(comma(after_stat(count)), "\n",
round(after_stat(count)/total_records*100, 1), "%")),
vjust = -0.3,
size = 4.5,
fontface = "bold",
color = "#333333"
) +
scale_fill_manual(values = cut_colors) +
scale_y_continuous(
labels = comma,
limits = c(0, 22000),
expand = c(0, 0)
) +
labs(
title = "Cut Quality Distribution",
subtitle = "Cut grading: Fair (lowest) → Good → Very Good → Premium → Ideal (highest)",
x = "Cut Quality Level",
y = "Number of Diamonds"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0),
plot.subtitle = element_text(color = "#555555", size = 11, margin = margin(b = 20)),
axis.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 12),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank(),
plot.margin = margin(15, 15, 15, 15)
)
Grafik batang (bar chart) di atas menampilkan distribusi kualitas potongan berlian dari 53.940 data berlian. Setiap batang merepresentasikan jumlah berlian dalam kategori potongan tertentu, dengan persentase dari total keseluruhan.
Interpretasi Hasil:
Dari visualisasi ini terlihat bahwa:
Ideal Cut (21,551 berlian, 40%) mendominasi pasar dengan warna hijau. Ini menunjukkan bahwa mayoritas berlian di pasaran memiliki kualitas potongan terbaik yang menghasilkan kilau maksimal.
Premium Cut (13,791 berlian, 25.6%) menjadi pilihan kedua dengan warna biru. Meskipun tidak se-sempurna Ideal, kategori ini tetap memiliki kualitas tinggi.
Very Good, Good, dan Fair (warna abu-abu) menunjukkan volume yang lebih rendah secara progresif. Fair hanya 3% dari total, mengindikasikan permintaan pasar yang sangat rendah untuk kualitas potongan basic.
Insight Bisnis:
Kombinasi Ideal + Premium mencapai 65.5% dari total pasar. Ini menunjukkan bahwa konsumen sangat memprioritaskan kualitas potongan, yang merupakan faktor utama dalam menentukan kilau dan kemilau berlian.
Rekomendasi:
Fokuskan inventori pada kategori Ideal dan Premium untuk memaksimalkan volume penjualan. Kategori Fair dapat dikurangi atau dieliminasi karena minimnya permintaan pasar.
# COLOR CHART
color_colors <- c(
"D" = "#E0E0E0",
"E" = "#43A047", # Green - #1
"F" = "#BDBDBD",
"G" = "#1976D2", # Blue - #2
"H" = "#F57C00", # Orange - #3
"I" = "#9E9E9E",
"J" = "#E0E0E0"
)
ggplot(diamonds, aes(x = color, fill = color)) +
geom_bar(width = 0.65) +
geom_text(
stat = "count",
aes(label = paste0(comma(after_stat(count)), "\n",
round(after_stat(count)/total_records*100, 1), "%")),
vjust = -0.3,
size = 4,
fontface = "bold"
) +
scale_fill_manual(values = color_colors) +
scale_y_continuous(labels = comma, limits = c(0, 12000), expand = c(0, 0)) +
labs(
title = "Color Grade Distribution",
subtitle = "D=Colorless (best) → E,F=Colorless → G,H,I,J=Near-colorless",
x = "Color Grade",
y = "Count"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "#555555", size = 11),
axis.title = element_text(face = "bold", size = 12),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
# CLARITY CHART
clarity_colors <- c(
"I1" = "#E0E0E0",
"SI2" = "#F57C00", # Orange - #3
"SI1" = "#2E7D32", # Green - #1
"VS2" = "#1976D2", # Blue - #2
"VS1" = "#9E9E9E",
"VVS2" = "#BDBDBD",
"VVS1" = "#E0E0E0",
"IF" = "#F5F5F5"
)
ggplot(diamonds, aes(x = clarity, fill = clarity)) +
geom_bar(width = 0.65) +
geom_text(
stat = "count",
aes(label = paste0(comma(after_stat(count)), "\n",
round(after_stat(count)/total_records*100, 1), "%")),
vjust = -0.3,
size = 3.5,
fontface = "bold"
) +
scale_fill_manual(values = clarity_colors) +
scale_y_continuous(labels = comma, limits = c(0, 14000), expand = c(0, 0)) +
labs(
title = "Clarity Grade Distribution",
subtitle = "I1=Included (lowest) → SI=Slightly Included → VS=Very Slightly → VVS → IF=Flawless (best)",
x = "Clarity Grade",
y = "Count"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "#555555", size = 11),
axis.title = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 11),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
Penjelasan Visualisasi - Warna (Color):
Grafik pertama menunjukkan distribusi grade warna berlian dari D (tidak berwarna/colorless) hingga J (hampir tidak berwarna/near-colorless). Warna pada berlian dinilai berdasarkan ketiadaan warna - semakin tidak berwarna, semakin tinggi nilainya.
Sistem Grading Warna: - D, E, F = Colorless (tidak berwarna) - kualitas tertinggi - G, H, I, J = Near-colorless (hampir tidak berwarna) - warna sedikit terlihat
Interpretasi Warna:
3 grade teratas mencakup 54.5% dari pasar:
G (20.9%, warna biru) - Grade paling populer karena berada di sweet spot antara kualitas dan harga. Termasuk kategori near-colorless namun hampir tidak terlihat perbedaannya dengan colorless.
E (18.2%, warna hijau) - Grade colorless premium, sangat diminati untuk berlian kualitas tinggi.
H (15.4%, warna orange) - Near-colorless yang lebih terjangkau namun tetap berkualitas baik.
D (12.6%) - Meski tertinggi, volume rendah karena harga premium dan kelangkaan.
J (5.2%) - Volume minimal karena warna mulai terlihat kekuningan.
# CLARITY CHART
clarity_colors <- c(
"I1" = "#E0E0E0",
"SI2" = "#F57C00", # Orange - #3
"SI1" = "#2E7D32", # Green - #1
"VS2" = "#1976D2", # Blue - #2
"VS1" = "#9E9E9E",
"VVS2" = "#BDBDBD",
"VVS1" = "#E0E0E0",
"IF" = "#F5F5F5"
)
ggplot(diamonds, aes(x = clarity, fill = clarity)) +
geom_bar(width = 0.65) +
geom_text(
stat = "count",
aes(label = paste0(comma(after_stat(count)), "\n",
round(after_stat(count)/total_records*100, 1), "%")),
vjust = -0.3,
size = 3.5,
fontface = "bold"
) +
scale_fill_manual(values = clarity_colors) +
scale_y_continuous(labels = comma, limits = c(0, 14000), expand = c(0, 0)) +
labs(
title = "Clarity Grade Distribution",
subtitle = "I1=Included (lowest) → SI=Slightly Included → VS=Very Slightly → VVS → IF=Flawless (best)",
x = "Clarity Grade",
y = "Count"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "#555555", size = 11),
axis.title = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 11),
legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
Penjelasan Visualisasi - Kejernihan (Clarity):
Grafik kedua menampilkan distribusi grade kejernihan berlian, yang mengukur keberadaan inklusi (internal) dan blemish (eksternal) pada berlian.
Sistem Grading Clarity (dari terendah ke tertinggi): - I1 = Included - inklusi terlihat jelas dengan mata telanjang - SI2, SI1 = Slightly Included - inklusi terlihat dengan pembesaran 10x, beberapa mungkin terlihat mata telanjang - VS2, VS1 = Very Slightly Included - inklusi minor terlihat dengan susah payah pada pembesaran 10x - VVS2, VVS1 = Very Very Slightly Included - inklusi sangat sulit dilihat bahkan dengan pembesaran 10x - IF = Internally Flawless - tidak ada inklusi internal, hanya blemish eksternal minor
Interpretasi Clarity:
Range SI1-VS2 mendominasi dengan 46.9% dari pasar:
SI1 (24.2%, warna hijau) - Grade paling populer. Kategori “eye-clean” dimana inklusi tidak terlihat mata telanjang namun harga lebih terjangkau. Sweet spot antara kualitas dan nilai.
VS2 (22.7%, warna biru) - Standard kualitas bagus dengan inklusi minimal yang sulit terlihat.
SI2 (17%, warna orange) - Entry level yang masih acceptable untuk konsumen budget-conscious.
IF (Internally Flawless - 3.3%) - Segmen premium langka dengan harga tinggi.
I1 (1.4%) - Volume minimal karena inklusi terlihat jelas, kurang diminati pasar.
Insight Gabungan:
Konsentrasi pasar di SI1-VS2 menunjukkan konsumen mencari “eye-clean diamonds” - berlian yang terlihat bersih dengan mata telanjang namun tidak perlu membayar premium untuk kesempurnaan mikroskopis yang tidak terlihat.
# Calculate counts for grouped display
cut_color_data <- diamonds %>%
group_by(cut, color) %>%
summarise(count = n(), .groups = "drop")
# Use a gradient palette for colors
color_palette_grouped <- c(
"D" = "#E3F2FD",
"E" = "#90CAF9",
"F" = "#42A5F5",
"G" = "#1976D2",
"H" = "#0D47A1",
"I" = "#757575",
"J" = "#424242"
)
ggplot(cut_color_data, aes(x = cut, y = count, fill = color)) +
geom_bar(stat = "identity", position = "dodge", width = 0.8) +
scale_fill_manual(
values = color_palette_grouped,
name = "Color Grade",
labels = c("D (Best)", "E", "F", "G", "H", "I", "J (Lowest)")
) +
scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.1))) +
labs(
title = "Cut Quality by Color Grade (Grouped View)",
subtitle = "Side-by-side comparison shows volume distribution across cut-color combinations",
x = "Cut Quality",
y = "Number of Diamonds"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 20)),
axis.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 12),
legend.position = "right",
legend.title = element_text(face = "bold", size = 12),
legend.text = element_text(size = 11),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
Penjelasan Visualisasi - Grouped Bar Chart:
Grafik batang terkelompok (grouped bar chart) ini menampilkan hubungan antara kualitas potongan (Cut) dan grade warna (Color). Setiap kategori Cut dipecah menjadi 7 batang terpisah yang mewakili grade warna D sampai J.
Cara Membaca Grafik:
Interpretasi Hasil:
Visualisasi ini mengungkap pola menarik:
Implikasi Bisnis:
Karena Cut dan Color dipilih secara independen, strategi inventori dapat dioptimalkan secara terpisah untuk masing-masing atribut. Tidak perlu “bundling” premium (misal: stok Ideal + D lebih banyak), tapi fokus pada kombinasi volume tinggi seperti Ideal/Premium + G/H.
# Color palette with gradient
# Hitung proporsi warna dalam tiap cut
diamond_prop <- diamonds %>%
count(cut, color) %>%
group_by(cut) %>%
mutate(prop = n / sum(n))
# Color palette with gradient
color_palette_prop <- c(
"D" = "#F5F5F5",
"E" = "#E8F5E9",
"F" = "#C8E6C9",
"G" = "#81C784",
"H" = "#4CAF50",
"I" = "#2E7D32",
"J" = "#1B5E20"
)
ggplot(diamond_prop,
aes(x = reorder(cut, -prop, sum),
y = prop,
fill = color)) +
geom_col(position = "fill", width = 0.75) +
geom_text(
aes(label = ifelse(prop > 0.03,
percent(prop, accuracy = 0.1),
"")),
position = position_fill(vjust = 0.5),
size = 3
) +
scale_fill_manual(
values = color_palette_prop,
name = "Color Grade",
labels = c(
"D – Colorless (Highest Grade)",
"E – Colorless (Very Rare)",
"F – Colorless (High Quality)",
"G – Near Colorless (Best Market Value)",
"H – Near Colorless (Slight Tint)",
"I – Near Colorless (Visible Warm Tone)",
"J – Near Colorless (Strong Warm Tint)"
)
) +
scale_y_continuous(
labels = percent_format(),
expand = c(0, 0)
) +
labs(
title = "Color Distribution Within Each Cut Quality (100% Stacked)",
subtitle = "Each bar represents 100% of diamonds within that cut category",
x = "Cut Quality",
y = "Percentage of Diamonds"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 20)),
axis.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 12),
legend.position = "right",
legend.title = element_text(face = "bold", size = 12),
legend.text = element_text(size = 11),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
Penjelasan Visualisasi - Proportion Bar Chart (100% Stacked):
Grafik batang bertumpuk proporsional (100% stacked bar chart) ini menampilkan komposisi warna dalam setiap kategori Cut sebagai persentase. Berbeda dengan grouped bar yang menunjukkan jumlah absolut, grafik ini menormalkan setiap batang menjadi 100% untuk memudahkan perbandingan proporsi.
Cara Membaca Grafik:
Interpretasi Hasil:
Analisis proporsional mengkonfirmasi temuan penting:
Insight Bisnis:
Konsumen tidak mengikuti logika “all premium” atau “all budget”. Mereka memilih kombinasi berdasarkan prioritas dan budget individual. Ada yang pilih Ideal+H (prioritas Cut), ada yang pilih Good+D (prioritas Color).
library(dplyr)
library(scales)
# Hitung proporsi clarity dalam tiap cut
clarity_prop <- diamonds %>%
count(cut, clarity) %>%
group_by(cut) %>%
mutate(prop = n / sum(n))
# Clarity gradient palette
clarity_palette_prop <- c(
"I1" = "#FFEBEE",
"SI2" = "#FFCDD2",
"SI1" = "#EF9A9A",
"VS2" = "#E57373",
"VS1" = "#EF5350",
"VVS2" = "#F44336",
"VVS1" = "#D32F2F",
"IF" = "#B71C1C"
)
ggplot(clarity_prop,
aes(x = cut,
y = prop,
fill = clarity)) +
geom_col(position = "fill", width = 0.75) +
geom_text(
aes(label = ifelse(prop > 0.03,
percent(prop, accuracy = 0.1),
"")),
position = position_fill(vjust = 0.5),
size = 3
) +
scale_fill_manual(
values = clarity_palette_prop,
name = "Clarity Grade",
labels = c(
"I1 – Included (Lowest)",
"SI2 – Slightly Included",
"SI1 – Slightly Included",
"VS2 – Very Slightly Included",
"VS1 – Very Slightly Included",
"VVS2 – Very Very Slightly Included",
"VVS1 – Very Very Slightly Included",
"IF – Flawless (Highest)"
)
) +
scale_y_continuous(
labels = percent_format(),
expand = c(0, 0)
) +
labs(
title = "Clarity Distribution Within Each Cut Quality (100% Stacked)",
subtitle = "SI1-VS2 range dominates across all cut categories",
x = "Cut Quality",
y = "Percentage of Diamonds"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 20)),
axis.title = element_text(face = "bold", size = 13),
axis.text = element_text(size = 12),
legend.position = "right",
legend.title = element_text(face = "bold", size = 12),
legend.text = element_text(size = 10),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank()
)
Penjelasan Visualisasi - Proportion Bar Chart: Cut × Clarity:
Grafik batang bertumpuk proporsional kedua ini menampilkan komposisi grade Clarity dalam setiap kategori Cut. Menggunakan gradient merah dari terang (I1 - terendah) ke gelap (IF - tertinggi).
Interpretasi Hasil:
Berbeda dengan hubungan Cut-Color yang sangat independen, hubungan Cut-Clarity menunjukkan sedikit korelasi:
Insight vs. Cut-Color:
Perbedaan dengan grafik Cut-Color sebelumnya: - Cut-Color: Benar-benar independen, tidak ada pola apapun - Cut-Clarity: Ada korelasi lemah - kualitas Cut sedikit mempengaruhi pilihan Clarity - Namun korelasi ini tidak kuat, tetap ada fleksibilitas besar
| Kategori | Fokus Utama | Peluang Sekunder | Hindari/Minimalkan |
|---|---|---|---|
| Cut | Ideal + Premium (78% market) | Very Good (22% — stable demand) | Fair (3% — minimal demand) |
| Color | G, E, H grades (60% market) | F grade (9% — premium segment) | J grade (3% — visible tint) |
| Clarity | SI1, VS2 range (47% market) | VS1 (12% — quality upgrade tier) | I1 (1% — visible inclusions) |
Penjelasan Tabel Rekomendasi:
Tabel di atas merangkum strategi inventori berdasarkan analisis kategorik yang telah dilakukan:
Primary Focus (Fokus Utama): - Area dengan volume pasar tertinggi yang harus menjadi prioritas stok - Cut: Ideal + Premium menguasai 78% pasar - Color: G, E, H menguasai 60% pasar - Clarity: SI1, VS2 menguasai 47% pasar
Secondary Opportunity (Peluang Sekunder): - Segmen dengan permintaan stabil namun tidak dominan - Cocok untuk diversifikasi dan segmen premium - Very Good cut: 22% pasar, permintaan stabil - F color: 9% pasar, segmen premium colorless - VS1 clarity: 12% pasar, upgrade tier untuk konsumen quality-conscious
Avoid/Minimize (Hindari/Minimalkan): - Kategori dengan permintaan sangat rendah - Mengikat modal tanpa ROI yang baik - Fair cut: Hanya 3%, permintaan minimal - J color: 3%, warna mulai terlihat kekuningan - I1 clarity: 1%, inklusi terlihat jelas
Strategi Inventori yang Disarankan:
Berdasarkan temuan analisis kategorik, berikut alokasi inventori yang optimal:
1. Core Stock (70% dari inventori): - Kombinasi: Ideal/Premium cuts + G/H colors + SI1/VS2 clarity - Alasan: Menangkap mayoritas permintaan pasar (sweet spot volume tinggi) - Target Konsumen: Mass market yang mencari kualitas baik dengan value terbaik - Contoh SKU: - Premium + G + SI1 - Ideal + H + VS2 - Premium + H + SI1
2. Premium Tier (20% dari inventori): - Kombinasi: Ideal cuts + D/E/F colors + VS1/VVS2 clarity - Alasan: Melayani segmen high-end dengan margin lebih tinggi - Target Konsumen: Pembeli premium yang mencari “best of the best” - Contoh SKU: - Ideal + D + VVS2 - Ideal + E + VS1 - Ideal + F + VVS1
3. Value Segment (10% dari inventori): - Kombinasi: Very Good cuts + I/J colors + SI2 clarity - Alasan: Menjangkau konsumen budget-conscious tanpa terlalu banyak stok low-end - Target Konsumen: First-time buyers, budget terbatas - Contoh SKU: - Very Good + I + SI2 - Good + J + SI2
Insight Utama dari Analisis:
Metodologi Analisis:
Sumber Data: Dataset diamonds dari paket ggplot2 di R (53.940 observasi)
Variabel Kategorik yang Dianalisis: - Cut (5 levels): Fair, Good, Very Good, Premium, Ideal - Color (7 levels): D, E, F, G, H, I, J - Clarity (8 levels): I1, SI2, SI1, VS2, VS1, VVS2, VVS1, IF
Teknik Visualisasi: 1. Bar Chart: Untuk melihat distribusi frekuensi setiap kategori 2. Grouped Bar Chart: Untuk membandingkan kombinasi antar kategori (jumlah absolut) 3. Proportion Bar Chart (100% Stacked): Untuk melihat komposisi proporsional dalam setiap kategori
Pendekatan Analisis: - Analisis univariat untuk setiap variabel kategorik - Analisis bivariat untuk melihat hubungan antar variabel (Cut × Color, Cut × Clarity) - Highlighting strategis (top 2-3 kategori) untuk fokus pada insight utama - Color coding konsisten: hijau/biru untuk top performers, grayscale untuk sisanya
Catatan Penutup:
Analisis ini memberikan panduan berbasis data untuk optimalisasi inventori berlian. Rekomendasi disusun berdasarkan pola permintaan pasar aktual dari dataset 53.940 berlian, bukan asumsi atau preferensi subjektif.
Untuk implementasi, lakukan A/B testing pada beberapa kombinasi yang direkomendasikan dan monitor sell-through rate untuk validasi lebih lanjut terhadap perilaku konsumen spesifik di pasar target Anda.
Laporan dibuat: 2026-02-12