Visualisasi data merupakan cara yang efektif untuk melihat dan memahami isi suatu data secara cepat dan sederhana. Dengan bantuan visualisasi, kita dapat melihat pola umum, sebaran nilai, serta kecenderungan data tanpa harus langsung berhadapan dengan angka-angka yang rumit. Pada pembahasan ini digunakan data berlian yang berjumlah 53.940 observasi dengan 10 variabel, di mana setiap baris data menggambarkan satu berlian beserta karakteristik fisik dan harga jualnya. Melalui visualisasi, informasi tersebut dapat disajikan secara lebih ringkas sehingga mudah dipahami, bahkan oleh pembaca yang belum terbiasa dengan analisis data.

Fokus visualisasi diarahkan pada variabel carat dan price, karena keduanya merupakan faktor utama yang sering diperhatikan dalam penilaian berlian. Visualisasi pada variabel carat membantu menunjukkan ukuran berlian yang paling banyak ditemukan, seberapa beragam ukurannya, serta apakah terdapat berlian dengan ukuran yang jauh berbeda dari kebanyakan data. Sementara itu, visualisasi pada variabel price digunakan untuk menggambarkan pola harga berlian, mulai dari kisaran harga yang umum hingga variasi harga yang cukup besar. Dengan melihat visualisasi ini, pembaca diharapkan dapat memperoleh gambaran yang lebih jelas mengenai karakteristik ukuran dan harga berlian tanpa perlu memahami perhitungan statistik yang kompleks.


Sebelum melakukan pengolahan data dan membuat grafik, kita perlu memanggil beberapa library yang akan digunakan. Library ini membantu proses visualisasi dan pengolahan data menjadi lebih sederhana dan terstruktur, sehingga analisis bisa dilakukan dengan lebih mudah dan efisien.

library(ggplot2)
library(dplyr)
head(diamonds)
## # A tibble: 6 × 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1  0.23 Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2  0.21 Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3  0.23 Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4  0.29 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5  0.31 Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6  0.24 Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

Library ggplot2 digunakan untuk membuat berbagai jenis grafik, khususnya grafik yang bersifat eksploratif dan mudah dibaca, sedangkan dplyr berperan dalam mengolah data seperti menghitung, menyaring, dan memodifikasi variabel. Dengan memanggil kedua library ini, kita sudah menyiapkan alat utama yang dibutuhkan untuk menganalisis dan memvisualisasikan data berlian pada tahap selanjutnya.


Sebelum membuat grafik, data terlebih dahulu diolah agar struktur distribusinya lebih jelas. Pada tahap ini, harga berlian dibagi ke dalam beberapa interval kelas sehingga kita bisa mengetahui jumlah data pada setiap rentang harga dan menandai rentang yang paling sering muncul.

hist_data <- diamonds %>%
  mutate(
    bin = cut(price, breaks = seq(0, max(price) + 500, by = 500))
  ) %>%
  count(bin) %>%
  mutate(
    kategori = ifelse(n == max(n), "Tertinggi", "Lainnya")
  )

Melalui proses ini, variabel price dikelompokkan ke dalam interval sebesar 500 USD, lalu dihitung frekuensinya pada setiap interval. Interval dengan jumlah data paling banyak kemudian diberi label Tertinggi, sementara interval lainnya dikelompokkan sebagai Lainnya. Pengelompokan ini membantu menonjolkan rentang harga yang paling dominan saat divisualisasikan, sehingga pola distribusi harga berlian dapat dipahami dengan lebih mudah dan intuitif.

ggplot(hist_data, aes(x = bin, y = n, fill = kategori)) +
  geom_col(
    color = "black",
    linewidth = 0.3,   
    width = 0.9
  ) +
  scale_fill_manual(
    values = c(
      "Lainnya" = "#C7D1D6",
      "Tertinggi" = "pink"  
    )
  ) +
  labs(
    title = "Distribusi Harga Berlian",
    x = "Harga",
    y = "Jumlah Data",
    fill = "Kategori",
    caption = "Sumber: Dataset diamonds (ggplot2, R)"
  ) +
  theme_minimal() +
  theme(
    text = element_text(family = "Times New Roman"),
    
    plot.title = element_text(
      hjust = 0.5,
      face = "bold",
      size = 16,
      margin = margin(b = 12)
    ),
    plot.caption = element_text(
      hjust = 0.5,
      size = 10,
      margin = margin(t = 12)
    ),
    axis.title.x = element_text(
      size = 13,
      margin = margin(t = 10)
    ),
    axis.title.y = element_text(
      size = 13,
      margin = margin(r = 10)
    ),
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank()
  )

Grafik ini menunjukkan bahwa sebagian besar berlian berada pada rentang harga rendah hingga menengah, sedangkan berlian dengan harga sangat tinggi jumlahnya relatif lebih sedikit. Pola ini memperlihatkan distribusi yang miring ke kanan, yang berarti terdapat beberapa berlian dengan harga tinggi namun tidak mendominasi data. Dengan visualisasi ini, kita bisa langsung memahami gambaran umum harga berlian tanpa perlu melihat tabel angka satu per satu, sehingga lebih mudah dipahami oleh pembaca awam.

Setelah melihat gambaran umum distribusi harga berlian, analisis selanjutnya difokuskan pada variabel carat untuk memahami bagaimana sebaran ukuran berlian dalam data. Melalui grafik kepadatan, kita dapat melihat pola distribusi berat berlian secara keseluruhan, mulai dari ukuran yang paling sering muncul hingga ukuran yang jumlahnya relatif jarang, dengan tampilan yang lebih halus dan mudah dipahami.

ggplot(diamonds, aes(x = carat)) +
  geom_density(
    fill = "skyblue",
    color = "black",
    alpha = 0.85,
    size = 0.4        
  ) +
  
  scale_x_continuous(
    limits = c(0, 5),
    breaks = seq(0, 5, by = 1)
  ) +
  
  labs(
    title = "Pola Kepadatan Berat Berlian",
    x = "Carat",
    y = "Kepadatan",
    caption = "Sumber: Dataset diamonds (ggplot2, R)"
  ) +
  
  theme_minimal() +
  theme(
    text = element_text(family = "Times New Roman"),
    
    plot.title = element_text(
      hjust = 0.5,
      face = "bold",
      size = 16,
      margin = margin(b = 12)
    ),
    
    plot.caption = element_text(
      hjust = 0.5,     
      size = 10,
      margin = margin(t = 12)
    ),
    
    axis.title.x = element_text(
      size = 12,
      margin = margin(t = 10)
    ),
    
    axis.title.y = element_text(
      size = 12,
      margin = margin(r = 10)
    )
  )

Dari grafik tersebut terlihat bahwa sebagian besar berlian memiliki berat kecil hingga menengah, sementara berlian dengan berat besar jumlahnya jauh lebih sedikit. Pola kepadatannya cenderung miring ke kanan, yang menunjukkan adanya beberapa berlian berukuran besar tetapi tidak mendominasi keseluruhan data. Visualisasi ini membantu pembaca awam memahami gambaran umum sebaran berat berlian secara cepat dan intuitif, tanpa harus berhadapan langsung dengan tabel angka yang panjang.

Untuk melengkapi informasi dari grafik kepadatan, visualisasi berikutnya disajikan dalam bentuk boxplot. Grafik ini membantu merangkum sebaran berat berlian secara lebih ringkas, sekaligus menampilkan nilai tengah, tingkat variasi data, serta keberadaan berlian dengan ukuran yang jauh lebih besar dibandingkan mayoritas data lainnya.

median(diamonds$carat, na.rm = TRUE)
## [1] 0.7
ggplot(diamonds, aes(y = carat)) +
  geom_boxplot(
    fill = "pink",
    color = "black",
    alpha = 0.7,
    size = 0.4
  ) +
  
  scale_y_continuous(
    limits = c(0, 6),
    breaks = seq(0, 6, by = 0.5)
  ) +
  
  labs(
    title = "Boxplot Berat Berlian",
    y = "Carat",
    caption = "Sumber: Dataset diamonds (ggplot2, R)"
  ) +
  
  theme_minimal() +
  theme(
    text = element_text(family = "Times New Roman"),
    
    plot.title = element_text(
      hjust = 0.5,
      face = "bold",
      size = 16,
      margin = margin(b = 12)
    ),
    
    plot.caption = element_text(
      hjust = 0.5,        
      size = 10,
      margin = margin(t = 12)
    ),
    
    axis.title.y = element_text(
      size = 12,
      margin = margin(r = 10)
    ),
    
    axis.title.x = element_blank()
  )

Dari grafik tersebut terlihat bahwa sebagian besar berlian memiliki berat kecil hingga menengah, sementara berlian dengan berat besar jumlahnya jauh lebih sedikit. Pola kepadatannya cenderung miring ke kanan, yang menunjukkan adanya beberapa berlian berukuran besar tetapi tidak mendominasi keseluruhan data. Visualisasi ini membantu pembaca awam memahami gambaran umum sebaran berat berlian secara cepat dan intuitif, tanpa harus berhadapan langsung dengan tabel angka yang panjang.


Berdasarkan keseluruhan visualisasi yang telah dibuat, dapat disimpulkan bahwa karakteristik pasar berlian dalam dataset ini didominasi oleh berlian dengan ukuran kecil hingga menengah dan harga rendah hingga menengah. Baik melalui histogram harga maupun grafik kepadatan dan boxplot carat, terlihat bahwa sebagian besar data terkonsentrasi pada nilai-nilai tersebut, sementara berlian dengan ukuran dan harga yang sangat tinggi jumlahnya relatif sedikit.

Pola distribusi yang cenderung miring ke kanan menunjukkan bahwa meskipun terdapat berlian dengan ukuran dan harga yang jauh lebih besar, keberadaannya tidak mendominasi keseluruhan data. Hal ini konsisten pada berbagai bentuk visualisasi yang digunakan, baik dalam bentuk grafik batang, density plot, maupun boxplot. Dengan pendekatan visualisasi ini, pembaca awam dapat memperoleh gambaran umum mengenai sebaran ukuran dan harga berlian secara cepat dan intuitif, tanpa harus memahami perhitungan statistik yang kompleks atau membaca tabel angka yang panjang.