Grafik default MATLAB enak untuk eksplorasi, tetapi kurang untuk laporan: garis tipis, warna seri berubah-ubah antar figur, dan heatmap tanpa colorbar memaksa pembaca menebak skala warna. Styling bukan kosmetik belaka — garis tebal dan warna konsisten menentukan seberapa cepat pola terbaca. Cakupan chapter ini:

  • Gaya garis, marker, dan warna: LineWidth, MarkerSize, MarkerFaceColor, RGB triplet
  • hold on untuk menumpuk seri dalam satu axes
  • colormap untuk data dua dimensi, colorbar, dan rentang warna
  • Grid, box, serta set(gca, ...) untuk gaya konsisten antar panel

Gaya Garis, Marker, dan Warna #

Aturannya: satu seri = satu kombinasi gaya yang dipertahankan di seluruh figur. Mekanismenya: plot(x, y, styles) menyetel properti objek garis saat pembuatan, dan pasangan name-value menambah pengaturan halus — LineWidth (poin, default 0.5), MarkerSize, serta MarkerFaceColor yang mengisi bagian dalam marker:

matlab
plot(bulan, tunai, '-o', 'LineWidth', 1.8, 'MarkerSize', 6, ...
     'Color', [0.20 0.40 0.80], 'MarkerFaceColor', [0.20 0.40 0.80]);

Warna paling aman ditulis sebagai RGB triplet [r g b] (nilai 0-1) karena kode singkat 'r', 'b', 'k' hanya tersedia tujuh dan mudah habis saat seri banyak. Tabel ringkas kombinasinya:

GayaKodeKapan dipakai
Garis solid, lingkaran'-o'seri utama / tren
Garis putus, kotak'--s'seri pembanding
Garis titik, segitiga':^'seri ketiga, ramai bila dicampur marker besar
Marker saja tanpa garis'd'data diskret (jam, hari)

hold on untuk Overlay #

Mekanismenya: plot biasanya MENGHAPUS isi axes lalu menggambar data baru. hold on membekukan axes sehingga pemanggilan plot berikutnya menumpuk di atas data lama; hold off mematikan perilaku tumpukan. Overlay dengan hold on inilah yang dipakai contoh utuh di bawah untuk menampilkan dua seri tanpa saling menimpa.

Colormap untuk Data Dua Dimensi #

Grafik surf, imagesc, dan heatmap memetakan nilai ke warna lewat lookup table — itulah colormap. Fungsi ini mengembalikan matriks n-baris × 3 kolom; baris ke-k adalah warna untuk nilai di sekitar level ke-k. Nama colormap yang tersedia di MATLAB sekaligus GNU Octave:

NamaKarakter warnaCocok untuk
grayhitam → putihcetak hitam-putih
hothitam → merah → kuning → putihintensitas, heatmap
coolcyan → magentakontras dua ujung
hsvpelangi melingkardata siklik (sudut/fase)
jetpelangi biru → merah klasikdikenal semua, tapi rentang merah/cyan mudah menyilaukan
parulabiru → kuning (default MATLAB)hanya MATLAB
viridisungu → kuning (default Octave)seragam secara persepsi

Colorbar dan Rentang Warna #

colorbar menambah batang warna di samping axes sebagai legenda nilai. Rentang pemetaan dikendalikan caxis([min max]) (diganti nama clim sejak MATLAB R2022a, keduanya sah): nilai di bawah min memakai warna terbawah, nilai di atas max memakai warna teratas, dan nilai antaranya dipetakan linier. Label batang ditambahkan dengan ylabel(handle, ...):

matlab
cb = colorbar;
ylabel(cb, 'Intensitas');
caxis([40 130]);    % rentang tetap, tidak ikut data

Rentang tetap penting saat dua heatmap dibandingkan berdampingan: tanpa caxis yang sama, warna yang sama bisa berarti nilai yang berbeda.

Contoh Utuh: Dasbor Dua Panel #

Skrip contoh.m berikut menyatukan seluruh alat — dua seri bergaya berbeda di panel atas, heatmap dengan colormap dan colorbar di panel bawah:

matlab
bulan = 1:12;
tunai  = [82 90 85 96 92 105 100 108 104 115 110 122];
kredit = [40 44 42 48 46 53 50 56 54 60 57 66];

% data peta panas: 4 kota x 12 bulan (model musiman, deterministik)
kota  = {'Jakarta'; 'Bandung'; 'Surabaya'; 'Medan'};
dasar = [95; 70; 55; 40];
M = dasar * (1 + 0.2*sin(2*pi*bulan/12)) .* (1 + 0.01*(bulan-1));

f = figure('visible', 'off', 'Position', [100 100 800 600]);

% --- Panel atas: dua seri dengan gaya berbeda ---
subplot(2, 1, 1);
hold on;
plot(bulan, tunai, '-o', 'LineWidth', 1.8, 'MarkerSize', 6, ...
     'Color', [0.20 0.40 0.80], 'MarkerFaceColor', [0.20 0.40 0.80]);
plot(bulan, kredit, '--s', 'LineWidth', 1.8, 'MarkerSize', 7, ...
     'Color', [0.85 0.33 0.10], 'MarkerFaceColor', [0.85 0.33 0.10]);
hold off;
grid on; box off;
xlabel('Bulan'); ylabel('Transaksi (ribu)');
title('Pembayaran tunai vs kredit');
legend('tunai', 'kredit', 'Location', 'northwest');
set(gca, 'FontSize', 11, 'LineWidth', 0.8);

% --- Panel bawah: peta panas + colormap + colorbar ---
subplot(2, 1, 2);
imagesc(bulan, 1:4, M);
colormap(hot);                       % berlaku untuk seluruh figur
colorbar;
caxis([40 130]);                     % rentang warna tetap
set(gca, 'YTick', 1:4, 'YTickLabel', kota);
xlabel('Bulan'); ylabel('Kota');
title('Penjualan per kota (unit)');
box on;

saveas(f, 'styling-dasbor.png');
fprintf('Grafik tersimpan: styling-dasbor.png\n');
fprintf('Ukuran peta panas: %d x %d\n', size(M, 1), size(M, 2));
fprintf('Rentang colorbar (CLim): %s\n', mat2str(get(gca, 'CLim')));

Output yang Dihasilkan:

text
Grafik tersimpan: styling-dasbor.png
Ukuran peta panas: 4 x 12
Rentang colorbar (CLim): [40 130]

Mari kita bedah baris-baris kode di atas:

  1. Baris 8 (M = dasar * (1 + 0.2*sin(...)) .* (1 + 0.01*(bulan-1))): matriks 4x12 dibangun lewat perkalian luar dasar (4x1) * pola (1x12), lalu elemen-wise dikali tren bulanan — pola broadcasting yang sudah kita kenal di Chapter Broadcasting dan Implicit Expansion.
  2. Baris 10 (figure(..., 'Position', [100 100 800 600])): ukuran figur 800x600 piksel ditetapkan sejak awal; seluruh panel menyesuaikan sehingga rasio layout terkendali.
  3. Baris 14-19 (hold on … hold off): kedua seri digambar dengan pasangan Color dan MarkerFaceColor yang sama per seri — satu kombinasi warna, garis, dan marker.
  4. Baris 20 (grid on; box off): grid membantu membaca nilai; box off membuka bingkai atas-kanan agar panel terasa lebih ringan.
  5. Baris 24 (set(gca, 'FontSize', 11, 'LineWidth', 0.8)): ukuran font ticks dan ketebalan garis sumbu diatur dari satu perintah — bingkai axes ikut lebih tegas.
  6. Baris 28-29 (imagesc(bulan, 1:4, M) dan colormap(hot)): imagesc memetakan matriks ke piksel berwarna; colormap hot dipanggil sebagai fungsi sehingga skrip tidak bergantung default lingkungan.

Grid, Box, dan Properti Axes #

Dua perintah kecil yang mengubah kesan grafik: grid on/off mengatur garis bantu pada ticks, box on/off mengatur bingkai penuh di sekeliling axes. Sementara itu, set(gca, ...) adalah pintu ke semua properti axes sekaligus — FontSize untuk seluruh teks ticks, LineWidth untuk garis sumbu dan bingkai, XTick/XTickLabel dari chapter sebelumnya, hingga XColor/YColor bila sumbu ingin diredam. Pola praktisnya: definisikan pasangan properti yang sama untuk setiap panel dasbor, atau simpan sebagai struct konfigurasi lalu terapkan lewat loop subplot.

Ringkasan #

Styling menentukan kecepatan baca: gaya garis dan RGB triplet menjaga identitas seri antar figur, hold on menumpuk seri tanpa saling menimpa, colormap + colorbar + caxis membuat pemetaan warna jujur dan sebanding, dan set(gca, ...) menyatukan font serta garis sumbu seluruh panel. Dasbor yang rapi tinggal satu langkah menuju laporan: menyimpannya ke berkas — Chapter Export Figures.