Visualisasi Data
Exercises ~ Week 3
1 Pendahuluan
Tujuan dari data data ini adalah untuk memberikan pemahaman secara menyeluruh tentang performa produk dari berbagai jenis tipe sepatu ventela berdasarkan rating, jumlah penjualan, dan harga. Dari berbagai macam visualisasi kita dapat melihat perbandingan tingkat penjualan disetiap tipe produk, serta kisaran harga yang ditentukan, sampai pola hubungan penjualan antara harga dan minat pembeli. Hasil dari visualisasi membantu kita mengidentifikasi produk yang paling diminati konsumen, pengaruhnya terhadap tingkat penjualan, serta terdapat gambaran kondisi pasar secara keseluruhan.
2 Persiapan Data
# Load package
library(ggplot2)
# 1. Create a Shoe Sales Table
library(knitr)
shoes <- data.frame(
Type = c(
"Champion Low Black Natural", "Public Low All Black Kanvas",
"Victory Low All Black", "Reborn Low Reflective White",
"Olympic Low Black White", "Alpha Low Cream",
"Ethnic High All Black Kanvas", "Evo Low Black Natural",
"V23 Low Black Brown", "Rubick Fat Low Black White"
),
Rating = c(4.9, 4.9, 4.6, 4.8, 5.0, 4.9, 4.9, 5.0, 4.7, 4.8),
Sold = c(57, 980, 46, 697, 62, 572, 840, 29, 46, 80),
Price = c(276.104, 229.280, 248.940, 302.940, 302.940, 167.680, 185.280, 190.440, 275.940, 284.940))
knitr::kable(shoes, caption = "table:ventela shoe sales")| Type | Rating | Sold | Price |
|---|---|---|---|
| Champion Low Black Natural | 4.9 | 57 | 276.104 |
| Public Low All Black Kanvas | 4.9 | 980 | 229.280 |
| Victory Low All Black | 4.6 | 46 | 248.940 |
| Reborn Low Reflective White | 4.8 | 697 | 302.940 |
| Olympic Low Black White | 5.0 | 62 | 302.940 |
| Alpha Low Cream | 4.9 | 572 | 167.680 |
| Ethnic High All Black Kanvas | 4.9 | 840 | 185.280 |
| Evo Low Black Natural | 5.0 | 29 | 190.440 |
| V23 Low Black Brown | 4.7 | 46 | 275.940 |
| Rubick Fat Low Black White | 4.8 | 80 | 284.940 |
3 VIsualisasi
3.1 Bar Chart
3.1.1 Definisi
Definisi: Bar Chart adalah grafik berbentuk batang yang digunakan untuk menampilkan data dalam kategori tertentu. Setiap batang mewakili satu kategori, dan tinggi atau panjang batang menunjukkan besarnya nilai pada kategori tersebut. Grafik ini berguna untuk membandingkan nilai antar kelompok secara cepat dan visual.
3.1.2 Aturan Penggunaan
Sumbu: Sumbu X (Horizontal): berisi kategori atau kelompok (misalnya jenis sepatu). Sumbu Y (Vertikal): menunjukkan nilai atau jumlah (misalnya total penjualan).
Skala: Pastikan skala pada sumbu Y dimulai dari nol untuk menghindari distorsi visual yang salah.
Lebar Batang: semua batang harus memiliki ukuran dan jarak yang konsisten agar mudah dibaca.
Jarak Antar Batang: Jarak antar batang sebaiknya konsisten untuk menjaga kejelasan visual.
Label: tambahkan label jelas pada setiap batang agar pembaca tahu kategori yang ditampilkan.
3.1.3 Kelebihan dan Kekurangan
- Kelebihan:
- Mudah dibaca dan dipahami oleh semua orang.
- Efektif untuk membandingkan perbedaan antar kategori.
- Dapat menampilkan perbedaan besar atau kecil antar nilai secara jelas.
- Cocok untuk berbagai jenis data kategorikal (seperti produk, tipe, wilayah, dll).
- Kekurangan:
- Kurang cocok jika jumlah kategori terlalu banyak karena bisa membuat grafik tampak penuh dan sulit dibaca.
- Tidak ideal untuk menunjukkan perubahan dari waktu ke waktu (lebih cocok pakai Line Chart).
- Bisa memberikan kesan visual yang salah kalau skala sumbu tidak dimulai dari nol.
- Keterbatasan kategori sehingga tidak cocok untuk menampilkan data yang memuat kategori sangat banyak karena bisa membuat diagram terlalu ramai dan sulit dibaca
# Bar Chart - Enhanced Sales Comparison
library(ggplot2)
ggplot(shoes, aes(x = Type, y = Sold, fill = Type)) +
geom_bar(stat = "identity", color = "black") +
geom_point(aes(y = Sold), color = "red", size = 3) +
geom_text(aes(label = Sold), vjust = -0.5, size = 4) +
labs(title = "Sales Comparison", x = "Shoe Type", y = "Units Sold") +
theme_minimal(base_size = 13) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "none",
plot.title = element_text(face = "bold", hjust = 0.5)) +
scale_fill_brewer(palette = "Set3")- kegunaan kode:
- ggplot(…) → buat kanvas grafik dari data shoes, dengan sumbu X = tipe sepatu dan Y = jumlah terjual.
- geom_bar(stat=“identity”) → menggambar batang sesuai nilai Sold.
- geom_point() → kasih titik merah di puncak batang biar jelas tinggi nilainya.
- geom_text() → menampilkan angka jumlah penjualan di atas tiap batang.
- labs() → menambah judul dan label sumbu.
- theme_minimal() & theme() → bikin tampilan bersih, memiringkan teks sumbu X, dan menengahkan judul.
- scale_fill_brewer() → pakai warna lembut berbeda untuk tiap tipe sepatu.
3.2 Histogram - Price Distribution
3.2.1 Definisi
Histogram adalah grafik batang yang menampilkan distribusi frekuensi dari data numerik. Data dibagi ke dalam beberapa interval (bin), dan tinggi batang menunjukkan berapa banyak data yang berada di setiap interval. Grafik ini berguna untuk melihat pola sebaran data — seperti apakah data cenderung merata, miring, atau memiliki nilai ekstrem.
3.2.2 Aturan Penggunaan
- Sumbu:
- Sumbu X: menampilkan rentang nilai (misalnya harga).
- Sumbu Y: menunjukkan jumlah data dalam tiap rentang.
- Bin:
- Lebar Bin dan jumlahnya : semua bin harus memiliki lebar sama. Terlalu sedikit bin bisa menyembunyikan detail, sedangkan terlalu banyak bisa membuat grafik tampak berisik.
- Label dan Judul: setiap sumbu dan grafik harus diberi keterangan yang jelas.
- Tidak Ada Jarak Antar Batang: tidak boleh ada jarak antar batang karena data bersifat kontinu.
3.2.3 Kelebihan dan Kekurangan
- Kelebihan:
- Efektif untuk melihat sebaran dan pola data numerik.
- Dapat menunjukkan pusat data, variasi, dan bentuk distribusi.
- Membantu mendeteksi outlier atau nilai yang tidak biasa.
- Kekurangan:
- Detail data individu hilang karena dikelompokkan ke dalam bin.
- Hasil bisa berbeda tergantung pada jumlah dan lebar bin.
- Hanya cocok untuk data numerik, bukan kategori.
ggplot(shoes, aes(x = Price)) +
geom_histogram(bins = 6, fill = "skyblue", color = "black", alpha = 0.9) +
geom_vline(aes(xintercept = mean(Price)), color = "red", linetype = "dashed") +
annotate("text", x = mean(shoes$Price) + 3, y = 2.5,
label = paste0("Avg: Rp", round(mean(shoes$Price), 0), "k"),
color = "red", size = 4, hjust = 0) +
scale_x_continuous(breaks = seq(155, 330, by = 25),
labels = scales::label_number(suffix = "k", accuracy = 1)) +
labs(title = "Price Distribution of Ventela Shoes",
x = "Price (in thousand Rupiah)", y = "Number of Shoe Types") +
theme_minimal(base_size = 13)- kegunaan kode:
- geom_histogram() → bikin batang sebaran harga.
- geom_vline() → garis merah nunjukin rata-rata harga.
- bins = 6 → harga dibagi jadi 6 kelompok (rentang harga).
- fill = “skyblue” → batang berwarna biru muda.
- color = “black” → garis tepi batang warna hitam.
- alpha = 0.9 → transparansi sedikit biar warnanya lembut.
3.3 Boxplot - Various Shoe Prices
3.3.1 Definisi
Boxplot adalah grafik yang menampilkan sebaran data numerik melalui kuartil dan mendeteksi adanya outlier (nilai ekstrem). Grafik ini membantu memahami pusat data (median), sebaran (IQR), serta apakah data condong ke satu sisi (skewness).
3.3.2 Aturan Penggunaan
- Sumbu:
- Sumbu vertikal menampilkan rentang nilai (misalnya harga)
- sumbu horizontal menunjukkan kategori atau kelompok data.
- Kotak (Box):
- Tepi bawah kotak menunjukkan kuartil pertama (Q1), yaitu 25% data berada di bawah nilai ini
- Tepi atas kotak menunjukkan kuartil ketiga (Q2), yaitu 75% data berada di bawah nilai ini
- Panjang kotak (Q3-Q1) disebut interquartile range (IQR), yang menunjukkan sebaran 50% data tengah
- Median:
- Garis horizontal di dalam kotak menunjukkan median (Q2), yaitu nilai tengah data
- Kumis (Whiskers):
- Menunjukkan nilai minimum dan maksimum yang masih dalam jangkauan wajar (bukan outlier).
3.3.3 Kelebihan dan Kekurangan
- Kelebihan:
- Mudah menunjukkan sebaran, median, dan outlier secara visual.
- Memudahkan perbandingan antar kelompok data.
- Tidak perlu asumsi bentuk distribusi tertentu.
- Kekurangan:
- Menyederhanakan data, jadi detail seperti rata-rata atau jumlah data tidak terlihat.
- Kurang cocok untuk data dengan banyak puncak (multimodal).
- Penentuan outlier kadang subjektif.
# Boxplot - Various Shoe Prices
ggplot(shoes, aes(y = Price)) +
geom_boxplot(fill = "lightgreen", color = "black") +
labs(title = "Boxplot of Various Shoe Prices",
y = "Price (in thousands IDR)",
x = "") +
theme_minimal()- kegunaan kode:
- ggplot(shoes, aes(y = Price)) → Buat plot vertikal harga sepatu.
- geom_boxplot(fill=“lightgreen”, color=“black”) → Tampilkan boxplot hijau dengan garis hitam.
- labs(…) → Tambah judul dan label sumbu Y, sumbu X dikosongkan.
- theme_minimal() → Tampilan plot bersih dan sederhana.
3.4 Pie Chart - Sales Percentage
3.4.1 Definisi
Pie Chart (diagram lingkaran) adalah representasi grafis data dalam bentuk lingkaran yang dibagi menjadi beberapa sektor. Setiap sektor menunjukkan proporsi atau persentase dari setiap kategori terhadap total keseluruhan. Tujuannya untuk memperlihatkan kontribusi relatif masing-masing kategori dalam satu tampilan yang sederhana dan mudah dipahami.
3.4.2 Aturan Penggunaan
- Sektor:
- Setiap sektor mewakili satu kategori data, dan ukurannya sebanding dengan persentase kategori tersebut terhadap total.
- Label:
- Setiap sektor sebaiknya diberi label yang jelas berisi nama kategori serta persentase atau proporsinya.
- Jumlah Kategori:
- Ideal digunakan untuk data dengan sedikit kategori (kurang dari 7–8), karena terlalu banyak sektor membuat visual sulit dibaca.
- Total 100%:
- Jumlah semua persentase dalam pie chart harus sama dengan 100%
- Urutan:
- Sektor biasanya diurutkan dari yang terbesar ke terkecil agar perbandingan lebih mudah dilakukan.
3.4.3 Kelebihan dan Kekurangan
- Kelebihan:
- Mudah dipahami dan menarik secara visual.
- Efektif untuk menunjukkan proporsi tiap kategori terhadap total data.
- Memberikan gambaran cepat mengenai kategori dominan.
- Kekurangan:
- Tidak akurat untuk membandingkan sektor yang ukurannya mirip.
- Kurang efektif jika kategori terlalu banyak.
- Tidak menunjukkan nilai absolut, hanya persentase.
- Sulit digunakan jika ingin membandingkan lebih dari satu pie chart.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggrepel)
# Palette warna manual
my_colors <- c(
"Champion Low Black Natural" = "red",
"Public Low All Black Kanvas" = "navy",
"Victory Low All Black" = "darkgreen",
"Reborn Low Reflective White" = "orange",
"Olympic Low Black White" = "purple",
"Alpha Low Cream" = "darkgrey",
"Ethnic High All Black Kanvas" = "brown",
"Evo Low Black Natural" = "magenta",
"V23 Low Black Brown" = "blue",
"Rubick Fat Low Black White" = "black"
)
# Pie chart
shoes %>%
mutate(Percent = round(Sold / sum(Sold) * 100, 1),
Label = paste0(Percent, "%")) %>%
ggplot(aes("", Percent, fill = Type)) +
geom_bar(stat = "identity", color = "white", width = 1) +
coord_polar(theta = "y") +
geom_text_repel(aes(label = Label, color = Type), nudge_x = 1, segment.color = NA, size = 3.5, show.legend = FALSE) +
scale_fill_manual(values = my_colors,
labels = paste0(shoes$Type, " (", round(shoes$Sold / sum(shoes$Sold) * 100, 1), "%)")) +
scale_color_manual(values = my_colors) +
labs(title = "Sales Percentage of Ventela Shoes", fill = "Shoe Type") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "right",
legend.title = element_text(face = "bold"))- kegunaan kode:
- geom_bar(stat=“identity”) → batang sesuai nilai Percent.
- coord_polar(theta=“y”) → ubah batang menjadi pie chart.
- color=“white” → garis tepi tiap sektor supaya jelas.
- geom_text_repel() → mencegah label tumpang tindih.
- color = Type → label pakai warna sektor.
- segment.color = NA → garis penghubung tidak ditampilkan.
- scale_fill_manual() → pakai warna custom tiap tipe sepatu (my_colors).
- Legend menampilkan tipe sepatu + persentase.
- scale_color_manual() → label persentase pakai warna yang sama dengan sektor.
3.5 Scatter Plot - Price vs Sales
3.5.1 Definisi
Scatter Plot (diagram pencar) adalah grafik yang digunakan untuk menampilkan hubungan antara dua variabel numerik. Setiap titik mewakili satu observasi, dengan posisi horizontal (sumbu X) menunjukkan nilai satu variabel, dan posisi vertikal (sumbu Y) menunjukkan nilai variabel lainnya. Grafik ini membantu melihat apakah dua variabel memiliki hubungan positif, negatif, atau tidak ada hubungan sama sekali
3.5.2 Aturan Penggunaan
1. Tentukan Variabel: * Pilih dua variabel numerik yang ingin dibandingkan. 2. Buat Sumbu: * Sumbu X menunjukkan variabel pertama (misalnya harga), dan sumbu Y menunjukkan variabel kedua (misalnya jumlah terjual). 3. Plot Data: * Setiap titik pada grafik mewakili kombinasi nilai dari dua variabel tersebut
4. Interpretasi: * Perhatikan pola titik-titik, apakah naik (hubungan positif), turun (negatif), atau tersebar acak (tidak ada hubungan). Outlier juga perlu diperhatikan karena bisa mempengaruhi kesimpulan.
3.5.3 Kelebihan dan Kekurangan
- Kelebihan:
- Menunjukkan pola hubungan antara dua variabel dengan jelas.
- Memudahkan identifikasi korelasi, klaster, atau tren tertentu.
- Dapat mengungkap outlier atau data ekstrem.
- Visual sederhana dan mudah dipahami, bahkan bagi pemula.
- Kekurangan:
- Hanya menampilkan hubungan dua variabel sekaligus.
- Tidak bisa menunjukkan sebab-akibat, hanya korelasi.
- Sensitif terhadap outlier yang dapat menyesatkan interpretasi.
- Jika data terlalu padat, titik bisa saling tumpang tindih dan sulit dibaca.
ggplot(shoes, aes(x = Price, y = Sold, color = Rating, size = Rating)) +
geom_point(alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, color = "darkblue", linetype = "dashed") +
labs(
title = "Price vs Sales of Ventela Shoes",
x = "Price (Rp in thousands)",
y = "Units Sold",
color = "Rating",
size = "Rating"
) +
theme_minimal(base_size = 13)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: size.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
* kegunaan kode: * color=“white” → garis tepi tiap
sektor supaya jelas. * ggplot(shoes, aes(x = Price, y = Sold, color =
Rating, size = Rating)) → Buat kanvas scatter plot dari data shoes,
sumbu X = harga (Price), sumbu Y = jumlah terjual (Sold). Warna dan
ukuran titik (geom_point) ditentukan oleh rating tiap sepatu.
geom_point(alpha = 0.8) → Tambahkan titik dengan transparansi 0.8 supaya
titik yang saling tumpang tindih tetap terlihat. * geom_smooth(method =
“lm”, se = FALSE, color = “darkblue”, linetype = “dashed”) → Tambahkan
garis tren linear (regresi) berwarna biru tua dan putus-putus. se =
FALSE artinya tidak menampilkan confidence interval. * labs(…) →
Menambahkan judul plot dan label sumbu, serta label legend untuk warna
dan ukuran titik. * theme_minimal(base_size = 13) → Memberikan tema
bersih dengan ukuran font dasar 13 untuk visual yang rapi.
3.6 Line Plot - Sales Performance
3.6.1 Definisi
Line Plot digunakan untuk menampilkan perubahan nilai antar kategori atau dari waktu ke waktu menggunakan garis penghubung antar titik. Dalam konteks ini, grafik menunjukkan performa penjualan tiap tipe sepatu Ventela berdasarkan jumlah unit yang terjual. Setiap titik mewakili jumlah penjualan untuk satu jenis sepatu, sedangkan garis menunjukkan pergerakan nilai antar jenis.
3.6.2 Aturan Penggunaan
1. Buat Sumbu: * Sumbu X menunjukkan kategori (tipe sepatu), sedangkan sumbu Y menunjukkan nilai numerik (jumlah terjual). 2. Garis dan Titik: * Gunakan garis untuk menghubungkan titik-titik data agar pola perubahan terlihat jelas. 3. Urutan Data: * Data harus diurutkan secara logis (misalnya berdasarkan kategori atau waktu) agar tren mudah diikuti. 4. Tampilan: * Tambahkan label dan sesuaikan tampilan agar titik serta garis mudah dibaca.
3.6.3 Kelebihan dan Kekurangan
- Kelebihan:
- Cocok untuk menunjukkan tren atau perubahan nilai antar kategori.
- Memberikan gambaran cepat tentang kenaikan atau penurunan performa.
- Mudah dipahami dan efektif untuk data urut atau berkelanjutan.
- Kekurangan:
- Tidak cocok untuk data kategori acak tanpa urutan.
- Bisa menyesatkan jika jarak antar kategori tidak konsisten.
- Sulit dibaca jika terlalu banyak titik atau garis tumpang tindih.
3.6.4 Interpretasi:
Line Plot menunjukkan tren penjualan antar tipe sepatu Ventela. Dari grafik ini terlihat mana produk dengan performa tertinggi dan terendah, serta perubahan penjualan antar tipe. Misalnya, tipe tertentu memiliki peningkatan tajam, menandakan produk tersebut lebih diminati dibanding tipe lainnya.
ggplot(shoes, aes(Type, Sold, group = 1)) +
geom_line(color = "blue") +
geom_point(size = 2) +
labs(title = "Sales Performance", x = "Shoe Type", y = "Units Sold") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
* kegunaan kode: * ggplot(shoes, aes(Type, Sold, group
= 1)) → Buat kanvas plot dari data shoes, sumbu X = tipe sepatu (Type),
sumbu Y = jumlah terjual (Sold). * group = 1 memastikan semua titik
dihubungkan menjadi satu garis. * geom_line(color = “blue”) → Menggambar
garis biru yang menghubungkan titik-titik penjualan tiap tipe sepatu,
menunjukkan tren penjualan. * geom_point(size = 2) → Menambahkan titik
di tiap tipe sepatu untuk menandai jumlah penjualan, ukuran titik = 2. *
labs(title = “Sales Performance”, x = “Shoe Type”, y = “Units Sold”) →
Menambahkan judul plot dan label sumbu X & Y. * theme(axis.text.x =
element_text(angle = 45, hjust = 1)) → Memiringkan teks sumbu X 45° agar
nama tipe sepatu panjang tetap terbaca rapi t_repel() → mencegah label
tumpang tindih.
3.7 Density Plot – Distribusi Harga Sepatu
3.7.1 Definisi
Density Plot (atau plot kepadatan) adalah grafik yang menggambarkan distribusi probabilitas dari suatu variabel numerik kontinu dalam bentuk kurva halus. Plot ini menunjukkan sebaran data dan kepadatan relatif dari nilai-nilai yang diamati, di mana luas di bawah kurva bernilai 1 (merepresentasikan total,proporsi,data).
3.7.2 Aturan Penggunaan
1. Buat Sumbu: * Buat Sumbu: X: variabel numerik kontinu (misal: Price), Y: biasanya tidak digunakan secara eksplisit (karena grafik satu dimensi) 2. Alpha (Transparansi): * Mengatur tingkat transparansi kurva agar overlapping tetap terlihat 3. color: * Menentukan warna garis tepi kurva agar masing-masing kurva mudah dibedakan 4. Tata Letak: * Gunakan tema bersih seperti theme_minimal() 5. Judul plot: * di tengah dan tebal agar jelas 6. Legend: * sesuaikan atau hapus judul agar rapi 7. Fill / Pengelompokan: * Gunakan fill untuk membedakan kategori (misal: tipe sepatu)
3.7.3 Kelebihan dan Kekurangan
- Kelebihan:
- Menunjukkan distribusi data secara halus dan visual.
- Mudah membandingkan beberapa kelompok atau kategori.
- Mendeteksi pola seperti skewness, puncak ganda, atau outlier.
- Estetis dan cocok untuk presentasi visual.
- Kekurangan:
- Tidak menampilkan nilai individu secara detail.
- Hasil bisa berbeda tergantung pemilihan bandwidth / smoothing.
- Kurang cocok untuk data kategori; hanya untuk variabel numerik kontinu.
- Bisa membingungkan jika terlalu banyak kelompok sekaligus.
library(ggplot2)
# Enhanced Density Plot
ggplot(shoes, aes(x = Price, fill = Type)) +
geom_density(alpha = 0.8, color = "black", size = 0.7) +
scale_fill_brewer(palette = "Dark2") +
labs(
title = "Price Distribution of Ventela Shoes by Type",
x = "Price (Rp in thousands)",
y = "Density",
fill = "Shoe Type"
) +
geom_vline(data = shoes, aes(xintercept = Price, color = Type),
linetype = "dashed", size = 0.4, alpha = 0.5, show.legend = FALSE) + # garis vertikal tiap harga
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "right",
legend.title = element_text(face = "bold")
)## Warning: Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Groups with fewer than two data points have been dropped.
## Warning in RColorBrewer::brewer.pal(n, pal): n too large, allowed maximum for palette Dark2 is 8
## Returning the palette you asked for with that many colors
## Warning: Removed 10 rows containing missing values or values outside the scale range
## (`geom_density()`).
- kegunaan kode:
- geom_density() → buat kurva halus untuk melihat distribusi harga tiap tipe sepatu.
- alpha = 0.6 → membuat warna sedikit transparan agar overlapping kurva tetap terlihat.
- scale_fill_brewer() → memberikan warna berbeda untuk tiap tipe sepatu.
- labs() → judul dan label sumbu dalam bahasa Inggris sederhana.
- theme_minimal() + theme() → tampilan bersih, judul tebal dan di tengah, legend tanpa judul.
3.7.4 Interpretasi:
Density Plot menunjukkan bahwa sebagian besar tipe sepatu Ventela berada di rentang harga menengah, dengan beberapa tipe memiliki sebaran harga lebih lebar, menandakan variasi model atau kualitas. Puncak kurva yang lebih tinggi menunjukkan tipe dengan konsentrasi harga tertinggi, sedangkan ekor kurva menandakan adanya harga ekstrem. Dengan membandingkan kurva tiap tipe, kita dapat melihat perbedaan pola harga antar sepatu dan mengidentifikasi produk yang cenderung lebih mahal atau lebih murah.
3.8 Ridgeline Plot - Price distribution by shoe type
3.8.1 Definisi
Ridgeline Plot digunakan untuk menampilkan distribusi data numerik (seperti harga) untuk beberapa kategori secara tumpang tindih dengan bentuk kurva halus. Grafik ini menampilkan bagaimana sebaran harga tiap tipe sepatu Ventela berbeda satu sama lain.
3.8.2 Aturan Penggunaan
1. Buat Sumbu: * Sumbu X menunjukkan nilai numerik (harga), sedangkan sumbu Y menunjukkan kategori (tipe sepatu). 2. Distribusi: * Setiap kurva mewakili distribusi harga dari satu tipe sepatu. 3. Warna dan Label: * Gunakan warna berbeda untuk tiap kategori agar visual mudah dibedakan. 4. Tata Letak: * Pastikan kurva tidak terlalu banyak agar visual tetap jelas dan informatif.
3.8.3 Kelebihan dan Kekurangan
- Kelebihan:
- Memberikan visual menarik dan informatif untuk membandingkan distribusi antar kelompok.
- Efektif untuk menunjukkan variasi, rentang, dan pola sebaran data.
- Menarik secara estetika dan mudah menarik perhatian audiens.
- Kekurangan:
- Kurang efektif jika jumlah kategori terlalu banyak karena kurva bisa saling tumpang tindih.
- Tidak menunjukkan nilai spesifik, hanya pola sebaran umum.
- Perlu interpretasi hati-hati karena tampilan tumpang tindih bisa membingungkan.
3.8.4 Interpretasi:
Ridgeline Plot memperlihatkan bagaimana harga tiap tipe sepatu Ventela tersebar — mulai dari tipe dengan harga rendah hingga yang premium. Dari grafik ini dapat dilihat bahwa sebagian besar harga berada di rentang menengah, sementara beberapa tipe memiliki sebaran harga yang lebih lebar, menunjukkan variasi model atau kualitas yang berbeda.
3.9 Ridgeline Plot - Price distribution by shoe type}
library(ggplot2)
library(ggridges)
library(dplyr)
# Buat data untuk label: ambil harga tertinggi tiap tipe (di sini satu harga per tipe)
labels <- shoes %>%
select(Type, Price)
# Ridgeline Plot dengan label harga
ggplot(shoes, aes(x = Price, y = reorder(Type, Price), fill = Type)) +
geom_density_ridges(
alpha = 0.8,
color = "black",
scale = 2.5,
rel_min_height = 0.01
) +
geom_text(
data = labels,
aes(x = Price, y = reorder(Type, Price), label = paste0("Rp", round(Price, 0), "k")),
hjust = -0.1, # sedikit di kanan puncak
size = 3.5,
color = "black",
fontface = "bold"
) +
scale_fill_brewer(palette = "Set2") +
labs(
title = "Ridgeline Plot: Price Distribution by Shoe Type",
x = "Price (Rp in thousands)",
y = "Shoe Type"
) +
theme_minimal(base_size = 13) +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", hjust = 0.5),
axis.text.y = element_text(face = "bold")
)## Picking joint bandwidth of NaN
## Warning in RColorBrewer::brewer.pal(n, pal): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
3.9.1 kesimpulan:
1. Penjualan berbeda-beda tiap sepatu: Beberapa sepatu, misalnya Public Low All Black Kanvas dan Ethnic High All Black Kanvas, laris banget dibanding sepatu lain. Ada juga yang sepi peminat, seperti Evo Low Black Natural atau Victory Low All Black. Jadi jelas ada sepatu favorit konsumen.
2. Harga tidak selalu menentukan laku atau tidaknya sepatu: Dari scatter plot terlihat beberapa sepatu mahal tetap laku, dan ada yang murah tapi tidak banyak terjual. Jadi faktor selain harga, seperti model atau popularitas, ikut menentukan.
3. Sebaran harga tiap tipe sepatu berbeda-beda: Sebagian besar sepatu berada di harga menengah, tapi ada tipe premium dan tipe murah. Beberapa tipe punya harga yang bervariasi, kemungkinan karena ada beberapa model atau kualitas dalam satu tipe.
4. Ada sepatu yang mendominasi penjualan: Pie chart menunjukkan kalau sebagian kecil tipe sepatu menyumbang penjualan paling banyak. Artinya, ada produk andalan yang benar-benar jadi favorit pasar.
5. Kesimpulan sederhana: Kalau ingin jualan lebih sukses, fokus pada tipe sepatu yang laris dan populer. Untuk yang kurang laku, bisa dipertimbangkan strategi harga, promosi, atau model baru supaya lebih menarik bagi konsumen.