VISUALISASI MENGGUNAKAN DATASET DIAMONDS

ADELA MAHIDA PUTRI

11 FEBRUARI 2026


TUJUAN

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.


PANGGIL DATA

library (ggplot2)
library(tidyverse)
library(dplyr)
library(scales)
str(diamonds)
## 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 ...


VISUALISASI 1: BAR CHART

DISTRIBUSI FREKUENSI KATEGORI COLOR PADA DATASET DIAMONDS


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

Visualisasi

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.


VISUALISASI 2: GROUPED BAR CHART

FREKUENSI COLOR PADA SETIAP TINGKAT CLARITY DIAMONDS


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

color_clarity_freq <- diamonds %>%
  count(color, clarity)
color_clarity_freq
## # 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

Visualisasi

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.


VISUALISASI 3: PROPORTIONAL BAR CHART

PROPORSI KATEGORI CUT PADA SETIAP COLOR DIAMONDS


Visualisasi

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.


VISUALISASI 4: STACKED BAR CHART

FREKUENSI KATEGORI CUT PADA SETIAP COLOR DIAMONDS


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

color_cut_freq <- diamonds %>%
  count(color, cut)
color_cut_freq
## # 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

Visualisasi

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.