Line plot menjawab “bagaimana nilai berubah sepanjang urutan”, tetapi banyak pertanyaan data justru berbentuk “apakah dua variabel bergerak bersama”: apakah hari yang panas menjual lebih banyak? Apakah harga tinggi menurunkan pembelian? Scatter plot menjawabnya dengan menaruh setiap pengamatan sebagai satu titik pada bidang x-y, tanpa garis penghubung yang bisa menipu mata. Fungsi scatter() juga membawa dua kanal ekstra yang tidak dimiliki plot(): ukuran dan warna tiap titik. Cakupan chapter ini:
scatter(x, y)dan bedanya denganplot(x, y, 'o')scatter(x, y, s, c): ukuran dan warna per titikcolormapdancolorbarsebagai skala warna- Transparansi penanda (
MarkerFaceAlpha) - Membaca pola hubungan dan
scatter3untuk tiga variabel
Titik, Bukan Garis #
Aturannya: scatter(x, y) menampilkan setiap pengamatan sebagai penanda terpisah; urutan baris data tidak memengaruhi posisi. Mekanismenya: scatter() membuat satu objek Scatter yang menyimpan seluruh titik, bukan objek Line seperti pada plot(). Perbedaan ini bukan kosmetik — objek Scatter bisa mengatur ukuran dan warna per titik, sesuatu yang tidak bisa dilakukan objek Line tanpa dipecah menjadi banyak objek.
plot(x, y, 'o') % objek Line dengan penanda: satu ukuran, satu warna
scatter(x, y) % objek Scatter: ukuran dan warna bisa berbeda per titikUntuk data 50 titik tanpa variabel ketiga, keduanya menghasilkan gambar yang mirip. Keunggulan scatter() baru terasa ketika tiap pengamatan membawa nilai tambahan yang layak dikodekan — inilah bahasan berikutnya.
Ukuran dan Warna Tiap Titik #
Aturannya: bentuk lengkap scatter(x, y, s, c) menerima dua argumen tambahan — s mengatur luas penanda (satuan points²) dan c mengatur warna. Mekanismenya: s boleh berupa skalar (semua titik sama) atau vektor sepanjang data (tiap titik punya luas sendiri); c yang berupa vektor angka dipetakan ke colormap secara otomatis — nilai terkecil mendapat warna ujung bawah peta, nilai terbesar mendapat warna ujung atas. Kita terapkan pada sepuluh hari data suhu dan penjualan:
suhu = [22 24 25 26 28 30 31 33 34 35];
unit = [120 130 150 140 170 185 180 210 200 230];
r = corrcoef(suhu, unit);
fprintf('korelasi suhu-unit : %.4f\n', r(1, 2));
fprintf('jumlah titik : %d\n', numel(suhu));
fprintf('rentang suhu : %d-%d\n', min(suhu), max(suhu));
fprintf('rentang unit : %d-%d\n', min(unit), max(unit));
f = figure('visible', 'off');
scatter(suhu, unit, unit, suhu, 'filled');
colorbar; % skala warna <-> nilai suhu
colormap(jet);
xlabel('Suhu (C)');
ylabel('Unit terjual');
title('Suhu vs penjualan harian');
saveas(f, 'scatter-suhu-unit.png');
fprintf('Grafik tersimpan: scatter-suhu-unit.png\n');
delete(f);Output yang Dihasilkan:
korelasi suhu-unit : 0.9754
jumlah titik : 10
rentang suhu : 22-35
rentang unit : 120-230
Grafik tersimpan: scatter-suhu-unit.pngGrafik yang tersimpan menampilkan sepuluh titik biru-ke-merah (efek jet) yang berbaris naik dari kiri bawah ke kanan atas: hari yang lebih panas cenderung menjual lebih banyak. Mari kita bedah baris-baris kode di atas:
- Baris 4 (
r = corrcoef(suhu, unit)): koefisien korelasi Pearson 0.9754 — sangat dekat ke 1, membenarkan pola naik yang terlihat di grafik (angka memverifikasi gambar, bukan sebaliknya). - Baris 11 (
scatter(suhu, unit, unit, suhu, 'filled')): argumensmemakaiunitsehingga luas penanda sebanding penjualan hari itu, argumencmemakaisuhusehingga warna mengikuti suhu;'filled'mengisi interior penanda (tanpa argumen ini penanda hanya berupa lingkaran kosong). - Baris 12 (
colorbar): menampilkan batang skala di sisi kanan yang memetakan warna kembali ke angka suhu 22–35. - Baris 13 (
colormap(jet)): memilih peta warnajet; colormap default MATLAB adalahparulasejak R2014b.
Colormap dan Colorbar #
Aturannya: colormap mendefinisikan ramp warna sebagai matriks N×3 (baris = warna, kolom = R, G, B), dan pemetaan nilai c ke baris peta berlangsung linear dari cmin ke cmax. Mekanismenya: colorbar menggambar ramp warna beserta tanda angkanya; tanpa colorbar, pembaca hanya melihat warna tanpa tahu nilai mana yang diwakili. Peta warna yang paling sering dipakai:
| Colormap | Karakter | Ketersediaan |
|---|---|---|
parula | biru → kuning, default MATLAB R2014b+ | MATLAB |
jet | biru → merah klasik, kontras tinggi | keduanya |
turbo | versi jet yang lebih rapi (R2020b+) | keduanya |
gray | hitam → putih, aman untuk cetak | keduanya |
Peta jet memang dramatis, tetapi pita merah dan hijau di ujungnya bisa menutup detail — untuk data berurutan, parula atau turbo biasanya lebih jujur memperlihatkan gradien.
Transparansi Penanda #
Data besar (ratusan hingga ribuan titik) membuat titik-titik saling menutup — wilayah padat terlihat seperti gumpalan pekat. Solusi di MATLAB: atur transparansi lewat MarkerFaceAlpha, misalnya scatter(x, y, 40, c, 'filled', 'MarkerFaceAlpha', 0.3) — titik yang bertumpuk menjadi lebih gelap secara bertahap. Fitur ini tersedia sejak MATLAB R2015b dan tidak tersedia di Octave, sehingga contoh teruji di course memakai opacitas penuh; di data padat, alternatif portabel adalah memperkecil s atau memakai penanda '.'.
Membaca Pola Hubungan #
Scatter plot dibaca dari bentuk awan titik, bukan dari titik individual. Tiga pola yang paling sering muncul:
| Pola pada grafik | Interpretasi | Nilai korelasi kira-kira |
|---|---|---|
| Awan naik dari kiri bawah ke kanan atas | hubungan positif | r > 0 |
| Awan turun dari kiri atas ke kanan bawah | hubungan negatif | r < 0 |
| Awan membentuk gumpalan tanpa arah | tidak ada hubungan linear | r ≈ 0 |
Dua jebakan membaca pola: awan berbentuk kurva (misal huruf U) bisa punya r ≈ 0 padahal hubungannya kuat, dan satu titik pencilan jauh bisa menggelembungkan r secara artifisial — korelasi 0.9754 pada contoh kita sah karena seluruh awan memang naik serempak.
Tiga Variabel dengan scatter3 #
Aturannya: scatter3(x, y, z) menambahkan sumbu ketiga, dengan s dan c yang sama seperti scatter(). Mekanismenya: pengamatan kini menjadi titik di ruang 3D; MATLAB menampilkan proyeksi yang bisa diputar, dan di Octave sudut pandang diatur lewat view(az, el).
hari = 1:10;
f2 = figure('visible', 'off');
scatter3(hari, suhu, unit, 40, unit, 'filled');
xlabel('Hari');
ylabel('Suhu (C)');
zlabel('Unit terjual');
saveas(f2, 'scatter3-harian.png');
fprintf('Grafik tersimpan: scatter3-harian.png\n');
delete(f2);Output yang Dihasilkan:
Grafik tersimpan: scatter3-harian.pngGrafik tersimpan menampilkan titik-titik berjalan maju sepanjang sumbu Hari sambil naik di sumbu Suhu dan Unit — dua tren naik ditangkap dalam satu gambar.
Berkas contoh.m pada bagian bawah halaman memuat kedua grafik di atas beserta ringkasan numeriknya.
Ringkasan #
scatter(x, y) menaruh tiap pengamatan sebagai titik mandiri, argumen s dan c menambah dua kanal informasi (luas dan warna), dan colorbar mengembalikan skala angka ke kanal warna. Pola awan titik dibaca sebagai arah hubungan yang lalu diverifikasi dengan corrcoef — mata menangkap dugaan, angka mengonfirmasi. Untuk tiga variabel, scatter3 membawa pola yang sama ke ruang 3D. Ketika data yang ingin dibandingkan berupa kategori — produk, kota, kuartal — bentuk yang tepat bukan awan titik melainkan batang: bar chart, materi chapter berikutnya.