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 onuntuk menumpuk seri dalam satu axescolormapuntuk 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:
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:
| Gaya | Kode | Kapan 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:
| Nama | Karakter warna | Cocok untuk |
|---|---|---|
gray | hitam → putih | cetak hitam-putih |
hot | hitam → merah → kuning → putih | intensitas, heatmap |
cool | cyan → magenta | kontras dua ujung |
hsv | pelangi melingkar | data siklik (sudut/fase) |
jet | pelangi biru → merah klasik | dikenal semua, tapi rentang merah/cyan mudah menyilaukan |
parula | biru → kuning (default MATLAB) | hanya MATLAB |
viridis | ungu → 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, ...):
cb = colorbar;
ylabel(cb, 'Intensitas');
caxis([40 130]); % rentang tetap, tidak ikut dataRentang 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:
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:
Grafik tersimpan: styling-dasbor.png
Ukuran peta panas: 4 x 12
Rentang colorbar (CLim): [40 130]Mari kita bedah baris-baris kode di atas:
- Baris 8 (
M = dasar * (1 + 0.2*sin(...)) .* (1 + 0.01*(bulan-1))): matriks 4x12 dibangun lewat perkalian luardasar (4x1) * pola (1x12), lalu elemen-wise dikali tren bulanan — pola broadcasting yang sudah kita kenal di Chapter Broadcasting dan Implicit Expansion. - Baris 10 (
figure(..., 'Position', [100 100 800 600])): ukuran figur 800x600 piksel ditetapkan sejak awal; seluruh panel menyesuaikan sehingga rasio layout terkendali. - Baris 14-19 (
hold on…hold off): kedua seri digambar dengan pasanganColordanMarkerFaceColoryang sama per seri — satu kombinasi warna, garis, dan marker. - Baris 20 (
grid on; box off): grid membantu membaca nilai;box offmembuka bingkai atas-kanan agar panel terasa lebih ringan. - 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. - Baris 28-29 (
imagesc(bulan, 1:4, M)dancolormap(hot)):imagescmemetakan matriks ke piksel berwarna; colormaphotdipanggil 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.