11 FEBRUARI 2026Sebelum melakukan visualisasi, penting untuk memahami terlebih dahulu jenis data yang akan dianalisis. Data diskrit adalah data numerik yang berasal dari hasil perhitungan atau pencacahan, seperti jumlah produk terjual atau jumlah pelanggan. Nilainya berupa angka yang terpisah dan tidak berbentuk kontinu. Biasanya data ini ditampilkan dalam bentuk frekuensi atau jumlah kemunculan. Sementara itu, data kategorik adalah data yang berbentuk label atau kelompok, seperti jenis kelamin, warna, atau tingkat kualitas. Data ini tidak menunjukkan besaran angka, tetapi menunjukkan klasifikasi tertentu. Dalam praktik analisis data, baik data diskrit maupun kategorik sering divisualisasikan menggunakan bar chart, grouped bar chart, stacked bar chart, dan proportional bar chart karena jenis grafik ini efektif untuk memperlihatkan perbandingan dan distribusi antar kategori secara jelas.
Dataset diamonds merupakan data yang berisi informasi mengenai karakteristik berlian dan harga jualnya. Data ini terdiri dari 53.940 baris data dan 10 variabel, dimana setiap baris mewakili satu buah berlian. Dataset ini sering digunakan untuk keperluan eksplorasi dan visualisasi data karena mencerminkan berbagai aspek kualitas berlian yang saling berkaitan. Dalam industri berlian, kualitas produk umumnya dinilai berdasarkan konsep 4C, yaitu cut, color, clarity, dan carat. Di antara faktor tersebut, warna (color) menjadi salah satu aspek penting karena memengaruhi persepsi kualitas dan harga. Oleh karena itu, analisis ini bertujuan untuk mengeksplorasi distribusi kategori color dalam dataset serta menganalisis keterkaitannya dengan variabel kualitas lainnya, yaitu clarity dan cut. Melalui pendekatan ini, diharapkan dapat diperoleh pemahaman yang lebih komprehensif mengenai pola kualitas berlian dalam dataset.
## tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
## $ carat : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
## $ depth : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
## $ table : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
## $ price : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
## $ x : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
## $ y : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
## $ z : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
Secara struktur, dataset diamonds memiliki dua jenis variabel, yaitu numerik dan kategorik. Variabel numerik berjumlah tujuh, yaitu carat, depth, table, price, serta dimensi fisik berlian (x, y, z). Variabel ini dapat dianalisis menggunakan ukuran statistik seperti rata-rata, median, maupun distribusi. Sementara itu, terdapat tiga variabel kategorik, yaitu cut, color, dan clarity. Ketiga variabel ini menunjukkan tingkat kualitas berlian dalam bentuk kategori, bukan nilai numerik yang menunjukkan besaran. Pemisahan jenis variabel ini penting agar metode analisis dan visualisasi yang digunakan sesuai dengan karakteristik datanya.
Bar chart merupakan visualisasi dasar yang digunakan untuk menampilkan jumlah atau frekuensi tiap kategori. Grafik ini sangat membantu untuk melihat kategori mana yang paling dominan serta membandingkan jumlah antar kategori secara sederhana. Dalam konteks dataset diamonds, bar chart dapat digunakan untuk melihat distribusi jumlah berlian pada setiap kategori color.
Frekuensi Berlian Berdasarkan Kategori Color
diamonds$color <- factor(
diamonds$color,
levels = c("J", "I", "H", "G", "F", "E", "D"),
ordered = TRUE
)
color_freq <- diamonds %>%
count(color)
color_freq## # A tibble: 7 × 2
## color n
## <ord> <int>
## 1 J 2808
## 2 I 5422
## 3 H 8304
## 4 G 11292
## 5 F 9542
## 6 E 9797
## 7 D 6775
ggplot(color_freq, aes(x = color, y = n,
fill = ifelse(n == max(n), "highlight", "normal"))) +
geom_col(width = 0.6) +
scale_fill_manual(
values = c("highlight" = "#4CAF50",
"normal" = "#81C784"),
guide = "none"
) +
geom_text(aes(label = n), vjust = -0.5, size = 3) +
scale_y_continuous(
breaks = seq(0, max(color_freq$n) + 2000, by = 2000),
expand = expansion(mult = c(0, 0.1))
) +
labs(
title = "Distribusi Frekuensi Kategori Color pada Dataset Diamonds",
x = "Color",
y = "Frekuensi",
caption = "Urutan Kualitas Color: J = terendah → D = tertinggi\nSumber: Dataset Diamonds"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14,
margin = margin(b = 15)
),
axis.text.x = element_text(angle = 30, hjust = 1)
)Visualisasi ini menunjukkan frekuensi berlian berdasarkan kategori color (warna) dalam dataset diamonds. Urutan kategori disusun berdasarkan tingkat kualitas warna berlian, yaitu dari kualitas terendah dengan warna lebih kekuningan (J) hingga kualitas tertinggi dengan warna paling bening (D).
Berdasarkan grafik, berlian dengan warna G memiliki frekuensi paling banyak yaitu 11292. Sementara itu, warna J (kualitas terendah) memiliki frekuensi paling sedikit yaitu 2808. Menariknya, warna dengan kualitas paling tinggi (D) bukan merupakan kategori dengan frekuensi terbanyak. Hal ini menunjukkan bahwa berlian dengan kualitas menengah lebih banyak tercatat dibandingkan dengan kualitas yang sangat rendah maupun sangat tinggi dalam dataset ini.
Pola distribusi tersebut mengindikasikan bahwa data tidak terdistribusi secara merata pada seluruh kategori warna, melainkan terkonsentrasi pada kualitas menengah. Ketidakseimbangan ini penting untuk diperhatikan karena dapat memengaruhi analisis lanjutan, terutama apabila dilakukan perbandingan antar kategori warna.
Grouped bar chart digunakan ketika ingin membandingkan dua variabel kategorik secara bersamaan. Dalam grafik ini, setiap kategori utama akan memiliki beberapa batang yang dikelompokkan berdasarkan kategori kedua. Visualisasi ini membantu melihat pola perbandingan antar kategori dalam satu kelompok serta mengidentifikasi kemungkinan hubungan antar dua variabel kategorik, misalnya perbandingan color berdasarkan tingkat clarity.
Frekuensi Berlian Berdasarkan Kategori Clarity
diamonds$clarity <- factor(
diamonds$clarity,
levels = c("I1", "SI2", "SI1", "VS2", "VS1",
"VVS2", "VVS1", "IF"),
ordered = TRUE
)
clarity_freq <- diamonds %>%
count(clarity) %>%
arrange(clarity)
clarity_freq## # A tibble: 8 × 2
## clarity n
## <ord> <int>
## 1 I1 741
## 2 SI2 9194
## 3 SI1 13065
## 4 VS2 12258
## 5 VS1 8171
## 6 VVS2 5066
## 7 VVS1 3655
## 8 IF 1790
Frekuensi Berlian Menurut Kategori Color dan Clarity
## # A tibble: 56 × 3
## color clarity n
## <ord> <ord> <int>
## 1 J I1 50
## 2 J SI2 479
## 3 J SI1 750
## 4 J VS2 731
## 5 J VS1 542
## 6 J VVS2 131
## 7 J VVS1 74
## 8 J IF 51
## 9 I I1 92
## 10 I SI2 912
## # ℹ 46 more rows
ggplot(color_clarity_freq, aes(x = clarity, y = n, fill = color)) +
geom_col(
width = 0.9,
position = position_dodge2(width = 1, padding = 0)
) +
scale_fill_manual(
values = colorRampPalette(
c("#FDE725", "#35B779", "#2C7FB8")
)(7),
name = "Color"
) +
labs(
title = "Frekuensi Color pada Setiap Tingkat Clarity Diamonds",
x = "Clarity",
y = "Frekuensi",
caption = "Urutan Kualitas Color: J = terendah → D = tertinggi\nUrutan Kualitas Clarity: I1 = terendah → IF = tertinggi\nSumber: Dataset Diamonds"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14,
margin = margin(b = 30)
),
axis.text.x = element_text(angle = 30, hjust = 1),
legend.position = "right",
plot.margin = margin(t = 15, r = 15, b = 15, l = 15)
)Visualisasi ini menunjukkan hubungan antara kategori color (warna) dan clarity dalam dataset diamonds. Clarity merepresentasikan tingkat kejernihan berlian, dengan tingkat kecacatan paling tinggi (kualitas terendah) yaitu I1 dan tingkat kecacatan paling rendah (kualitas tertinggi) yaitu IF. Sedangkan untuk kategori color (warna), warna J merupakan kualitas warna paling rendah dan warna D merupakan kualitas warna paling tinggi.
Pada visualisasi terlihat bahwa frekuensi berlian terbesar berada pada tingkat clarity menengah yaitu SI1 dan VS2 yang mendominasi hampir seluruh kategori warna. Sementara itu, tingkat clarity tertinggi seperti VVS1 dan IF memiliki frekuensi yang relatif lebih sedikit.
Jika ditinjau dari kategori color, warna G cenderung dominan pada sebagian besar kategori clarity. Sedangkan warna D sebagai kualitas tertinggi, tidak selalu menjadi kategori dengan frekuensi terbesar pada tingkat clarity.
Secara keseluruhan, visualisasi ini menunjukkan bahwa distribusi berlian dalam dataset lebih banyak terkonsentrasi pada kategori kualitas menengah baik dari sisi warna maupun kejernihan. Pola ini mengindikasikan bahwa sebagian besar berlian dalam dataset cenderung berada pada tingkat kualitas yang seimbang (menengah), bukan pada kualitas paling premium maupun paling rendah.
Proportional bar chart mirip dengan stacked bar chart, tetapi semua batang memiliki tinggi yang sama karena yang ditampilkan adalah persentase, bukan jumlah absolut. Grafik ini sangat berguna untuk membandingkan komposisi antar kelompok tanpa dipengaruhi oleh perbedaan jumlah total data. Dengan demikian, proporsi cut pada masing-masing kategori color dapat dibandingkan secara lebih adil.
gradasi_cut <- colorRampPalette(
c("#FDE725", "#35B779", "#2C7FB8"))(5)
ggplot(diamonds, aes(x = color, fill = cut)) +
geom_bar(position = "fill") +
scale_fill_manual(
values = c(
"Fair" = gradasi_cut[1],
"Good" = gradasi_cut[2],
"Very Good" = gradasi_cut[3],
"Premium" = gradasi_cut[4],
"Ideal" = gradasi_cut[5]
),
name = "Cut"
) +
scale_y_continuous(
limits = c(0,1),
breaks = seq(0,1,0.2)
) +
labs(
title = "Proporsi Kategori Cut pada Setiap Color Diamonds",
x = "Color",
y = "Proporsi",
caption = "Urutan Kualitas Cut: Fair = terendah → Ideal = tertinggi\nUrutan Kualitas Color: J = terendah → D = tertinggi\nSumber: Dataset Diamonds"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14,
margin = margin(b = 20)
),
axis.text.x = element_text(angle = 30, hjust = 1),
legend.position = "right"
)Visualisasi ini menunjukkan hubungan antara kategori color (warna) dan cut (potongan) dalam dataset diamonds. Cut merepresentasikan kualitas potongan berlian, dengan kualitas terendah yaitu Fair dan kualitas tertinggi yaitu Ideal. Sedangkan untuk kategori color (warna), warna J merupakan kualitas warna paling rendah dan warna D merupakan kualitas warna paling tinggi.
Visualisasi ini menggunakan bentuk proporsi (persentase) yang membuat setiap batang menjadi sama tinggi (100%). Visualisasi ini menunjukkan komposisi kualitas potongan dalam tiap warna, bukan perbandingan jumlah total berlian antar warna.
Ditinjau dari distribusi proporsinya, hampir semua warna didominasi oleh kategori potongan Ideal dan Premium. Berlian dengan kualitas warna rendah juga banyak yang memiliki potongan Ideal dan kualitas warna tertinggi juga tidak menunjukkan peningkatan proporsi yang signifikan pada kategori cut kualitas tertinggi dibanding dengan warna lainnya.
Secara keseluruhan, visualisasi ini menunjukkan bahwa komposisi kualitas potongan (cut) pada setiap kategori warna (color) cenderung seragam dan tidak mengalami perbedaan proporsi yang mencolok antar warna. Kategori potongan tinggi seperti Ideal dan Premium mendominasi hampir seluruh kelompok warna, baik pada warna dengan kualitas rendah maupun tinggi. Hal ini mengindikasikan bahwa kualitas potongan dalam dataset relatif konsisten di berbagai tingkat warna. Dengan demikian, distribusi cut lebih mencerminkan pola yang stabil dan merata karena tidak terdapat pola peningkatan atau penurunan proporsi cut yang signifikan.
Stacked bar chart menampilkan beberapa kategori dalam satu batang yang sama tetapi ditumpuk menjadi satu kesatuan. Grafik ini memudahkan pembaca untuk melihat total keseluruhan sekaligus kontribusi masing-masing kategori di dalam satu kelompok. Misalnya, distribusi cut di dalam setiap kategori color dapat ditampilkan dengan cara ini sehingga terlihat komposisi tiap kelompok secara utuh.
Frekuensi Berlian Berdasarkan Kategori Cut
diamonds$cut <- factor(
diamonds$cut,
levels = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
ordered = TRUE
)
cut_freq <- diamonds %>%
count(cut) %>%
arrange(cut)
cut_freq## # A tibble: 5 × 2
## cut n
## <ord> <int>
## 1 Fair 1610
## 2 Good 4906
## 3 Very Good 12082
## 4 Premium 13791
## 5 Ideal 21551
** Frekuensi Berlian Menurut Kategori Color dan Cut **
## # A tibble: 35 × 3
## color cut n
## <ord> <ord> <int>
## 1 J Fair 119
## 2 J Good 307
## 3 J Very Good 678
## 4 J Premium 808
## 5 J Ideal 896
## 6 I Fair 175
## 7 I Good 522
## 8 I Very Good 1204
## 9 I Premium 1428
## 10 I Ideal 2093
## # ℹ 25 more rows
gradasi_cut <- colorRampPalette(
c("#FDE725", "#35B779", "#2C7FB8"))(5)
ggplot(diamonds, aes(x = color, fill = cut)) +
geom_bar() +
scale_fill_manual(
values = c(
"Fair" = gradasi_cut[1],
"Good" = gradasi_cut[2],
"Very Good" = gradasi_cut[3],
"Premium" = gradasi_cut[4],
"Ideal" = gradasi_cut[5]
),
name = "Cut"
) +
scale_y_continuous(
labels = scales::comma,
expand = expansion(mult = c(0, 0.05))
) +
labs(
title = "Frekuensi Kategori Cut pada Setiap Color Diamonds",
x = "Color",
y = "Frekuensi",
caption = "Urutan Kualitas Cut: Fair = terendah → Ideal = tertinggi\nUrutan Kualitas Color: J = terendah → D = tertinggi\nSumber: Dataset Diamonds"
) +
theme_minimal() +
theme(
plot.title = element_text(
hjust = 0.5,
face = "bold",
size = 14,
margin = margin(b = 20)
),
axis.text.x = element_text(angle = 30, hjust = 1),
legend.position = "right"
)Visualisasi ini menunjukkan hubungan antara kategori color (warna) dan cut (potongan) dalam dataset diamonds. Cut merepresentasikan kualitas potongan berlian, dengan kualitas terendah yaitu Fair dan kualitas tertinggi yaitu Ideal. Sedangkan untuk kategori color, warna J merupakan kualitas warna paling rendah dan warna D merupakan kualitas warna paling tinggi.
Berbeda dengan visualisasi proporsi (100%), grafik ini menampilkan frekuensi absolut (jumlah nyata) berlian pada setiap kombinasi color dan cut. Artinya, tinggi batang mencerminkan jumlah berlian sebenarnya dalam masing-masing kategori warna, bukan persentase komposisinya.
Jika ditinjau dari kategori cut, hampir seluruh warna didominasi oleh potongan Ideal, diikuti oleh Premium dan Very Good. Kategori cut terendah seperti Fair memiliki frekuensi paling kecil di semua warna. Pola ini menunjukkan bahwa sebagian besar berlian dalam dataset memiliki kualitas potongan yang relatif tinggi, terlepas dari tingkat warnanya.
Secara keseluruhan, visualisasi ini memperlihatkan bahwa dalam dataset diamonds, kualitas potongan tinggi (Ideal dan Premium) mendominasi hampir semua kategori warna. Selain itu, warna menengah seperti G, F, dan E memiliki jumlah observasi yang lebih besar dibandingkan warna ekstrem (J maupun D), sehingga distribusi total berlian lebih banyak terkonsentrasi pada warna menengah dengan kualitas potongan yang baik.