Fungsi plot menggambar kurva dua dimensi dengan menempatkan pasangan nilai (x, y) sebagai titik pada bidang lalu menghubungkannya menjadi garis. Topik ini membahas mekanisme panggilan plot, penulisan triplet gaya yang mengatur warna, jenis garis, dan penanda, penggabungan beberapa pasang data dalam satu panggilan, serta pembatasan daerah pandang sumbu dengan xlim, ylim, dan axis. Penguasaan materi ini menjadi dasar bagi hampir semua diagram MATLAB karena bentuk lain seperti diagram batang dan permukaan dibangun di atas konvensi yang sama.
Kurva pertama dengan plot#
Panggilan paling sederhana berbentuk plot(x, y) dengan x dan y dua vektor berpanjang sama. Fungsi plot menempatkan tiap pasangan sebagai satu titik pada bidang, lalu menghubungkan titik-titik itu dengan ruas garis berurutan, sehingga kerapatan titik menentukan halusnya kurva. Vektor y dihitung sekaligus oleh fungsi elementer karena operasi seperti sin bekerja per elemen pada array. Skrip berikut menggambar satu kurva sinus pada rentang sampai dengan 100 titik.
% kurva-sinus.m: menggambar kurva sinus dua dimensi dengan plot
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y, 'b-');
print('-dsvg', 'kurva-sinus.svg');Hasil eksekusi skrip itu tampak pada figur berikut.
Sebuah figur memuat bagian-bagian baku yang perlu dikenali sebelum dekorasi dibahas. Kotak gambar dengan latar putih disebut sumbu (axes) dan menampung kurva. Angka pada tepi sumbu, misalnya 0 sampai 7 pada sumbu horizontal dan -1 sampai 1 pada sumbu vertikal, disebut tick dan berfungsi sebagai skala pembacaan nilai. Garis biru padat adalah data itu sendiri.
Batas sumbu pada figur di atas dipilih otomatis dari rentang data, kemudian dibulatkan agar jarak antar tick rapi. Pengaturan batas ini dapat diambil alih secara manual dan dibahas pada bagian batas sumbu.
Beberapa pasangan data dalam satu panggilan#
Satu panggilan plot menerima beberapa pasang data sekaligus dengan bentuk plot(x1, y1, gaya1, x2, y2, gaya2, ...). Setiap pasang digambar pada sumbu yang sama sehingga beberapa kurva dapat dibandingkan langsung tanpa perintah tambahan. String gaya pada tiap pasang bersifat opsional. Apabila string itu dihilangkan, warna dipilih otomatis secara bergilir dari urutan warna bawaan, sehingga dua kurva tanpa gaya tetap dapat dibedakan warnanya. Skrip berikut menggambar empat kurva dengan empat string gaya berbeda dalam satu panggilan.
% gaya-garis.m: membandingkan empat gaya garis dalam satu panggilan plot
x = linspace(0, 2*pi, 200);
plot(x, sin(x), 'b-', x, cos(x), 'r--', x, sin(2*x)/2, 'g:', x, cos(2*x)/2, 'k-.');
print('-dsvg', 'gaya-garis.svg');Keempat kurva hasil skrip itu tampak pada figur berikut.
Kurva biru padat adalah , kurva merah putus-putus adalah , kurva hijau bertitik adalah , dan kurva hitam garis-titik adalah . Perbedaan gaya garis membuat kurva yang saling berpotongan tetap terlacak oleh mata meskipun warnanya mirip pada cetakan hitam putih. Kebiasaan yang baik pada figur teknis adalah memakai kombinasi gaya garis dan warna sekaligus, bukan warna saja, karena sebagian pembaca figur sulit membedakan warna.
Triplet gaya: warna, gaya garis, dan penanda#
Tampilan sebuah kurva diatur oleh satu string pendek yang menggabungkan kode warna, kode gaya garis, dan kode penanda (marker). Ketiganya ditulis tanpa pemisah dan urutannya bebas, misalnya 'b-' berarti garis biru padat tanpa penanda. Kode yang tersedia dirangkum pada tabel berikut.
| Bagian | Kode dan artinya |
|---|---|
| Warna | b biru, g hijau, r merah, c cyan, m magenta, y kuning, k hitam, w putih |
| Gaya garis | - padat, -- putus-putus, : bertitik, -. garis-titik |
| Penanda | o lingkaran, + plus, ^ segitiga, s kotak, d wajik, x silang, * bintang |
Gabungan lengkap seperti 'b-o' menghasilkan garis biru padat dengan penanda lingkaran pada tiap titik data. Penanda paling bermanfaat ketika jumlah titik sedikit, misalnya tujuh pengukuran harian, karena tiap titik pengukuran terlihat sebagai lingkaran, plus, atau segitiga. Skrip berikut memakai tiga bentuk penanda untuk tiga ruangan pada data suhu mingguan.
% penanda-data.m: tiga bentuk penanda pada data suhu harian
hari = 0:6;
ruangA = [24.0 25.1 26.4 26.8 25.9 24.6 23.8];
ruangB = [22.4 23.0 24.2 24.9 24.1 22.9 22.0];
ruangC = [20.8 21.2 22.0 22.6 21.8 20.9 20.2];
plot(hari, ruangA, 'bo', hari, ruangB, 'r+', hari, ruangC, 'g^');
print('-dsvg', 'penanda-data.svg');Titik-titik data dari ketiga ruangan itu tampak pada figur berikut.
Tanpa kode gaya garis, hanya penanda yang digambar sehingga seri data tampak sebagai kumpulan simbol, bukan kurva. Bentuk ini cocok untuk data diskret yang tidak punya makna di antara titiknya. Pada data kontinu yang rapat, penanda tanpa garis justru membuat simbol saling menumpuk. Kurva semacam itu cukup digambar dengan garis saja, atau dengan garis beserta penanda yang hanya muncul pada sebagian titik.
Penanda pada data rapat#
Kurva hasil pengukuran sering memuat ratusan titik sehingga penanda pada tiap titik saling menutup dan garis menjadi tebal semu. MATLAB menyediakan properti MarkerIndices untuk menggambar penanda hanya pada indeks tertentu, misalnya setiap titik ke-12. Properti itu belum tersedia pada GNU Octave yang dipakai untuk memverifikasi contoh pada jalur ini, sehingga bentuknya ditampilkan tanpa dieksekusi.
% tidak-dijalankan
% MATLAB modern: batasi penanda pada indeks tertentu dengan MarkerIndices
waktu = 0:0.25:12;
suhu = 24 + 5*sin(waktu/3);
plot(waktu, suhu, 'b-', 'MarkerIndices', 1:12:numel(waktu));Pola yang berjalan di kedua implementasi adalah menggambar dua pasang data dalam satu panggilan, yakni kurva penuh dengan gaya garis saja, lalu irisan data jarang dengan gaya penanda saja. Irisan waktu(1:12:end) mengambil setiap titik ke-12 sehingga penanda berjarak tiga jam pada data per seperempat jam. Skrip berikut memakai pola itu.
% penanda-tiap-n.m: penanda pada setiap titik ke-12 dari kurva rapat
waktu = 0:0.25:12;
suhu = 24 + 5*sin(waktu/3);
plot(waktu, suhu, 'b-', waktu(1:12:end), suhu(1:12:end), 'ro');
print('-dsvg', 'penanda-tiap-n.svg');Kurva lengkap dengan lima penanda merah hasil skrip itu tampak pada figur berikut.
Batas sumbu dengan xlim, ylim, dan axis#
Batas sumbu otomatis kadang memuat daerah kosong yang melebar atau memotong bagian data yang ingin ditekankan. Perintah xlim([a, b]) dan ylim([c, d]) mengganti batas sumbu horizontal dan vertikal secara terpisah, sedangkan axis([a, b, c, d]) mengatur keempat batas dalam satu perintah. Skrip berikut mempersempit pandangan kurva sinus ke setengah periode tengah.
% batas-sumbu.m: membatasi daerah pandang dengan xlim dan ylim
x = linspace(0, 2*pi, 200);
y = sin(x);
plot(x, y, 'b-');
xlim([pi/2, 3*pi/2]);
ylim([-1.25, 1.25]);
print('-dsvg', 'batas-sumbu.svg');Hasil pembatasan itu tampak pada figur berikut.
Dua bentuk pengaturan batas berikut ini melengkapi xlim dan ylim.
axis([pi/2 3*pi/2 -1.25 1.25]); % satu perintah, empat batas
axis tight; % rapatkan batas ke rentang dataPerintah axis tight merapatkan batas sampai persis ke nilai terkecil dan terbesar data, berguna ketika daerah kosong pada batas otomatis mengesankan skala yang salah. Batas manual dipakai justru untuk kebalikannya, yaitu memberi ruang kosong agar kurva atau anotasi tidak menempel pada tepi sumbu. Keduanya mengubah figur yang sedang aktif sehingga urutannya selalu setelah panggilan plot.
Kesalahan umum#
- Kedua vektor berpanjang berbeda. Fungsi
plotmenolak pasangan x dan y yang jumlah elemennya tidak sama karena tiap titik membutuhkan satu nilai pada tiap sumbu. Kondisi ini lazim muncul ketika rentangxdiperpanjang atau diubah tanpa menghitung ulangy.
x = linspace(0, 1, 5);
y = [1 2 3 4];
try
plot(x, y);
catch e
disp(e.message)
end__plt2vv__: vector lengths must match- Menulis
plot(y)dan mengira sumbu horizontalnya bernilai data. Tanpa argumenx, fungsiplotmemakai nomor indeks 1 sampai n sebagai nilai horizontal. Hasilnya benar secara sintaks tetapi salah secara makna ketika pembaca mengharapkan skala waktu atau sudut. Selalu tuliskan kedua argumen kecuali nomor indeks memang dimaksudkan. - Menukar urutan
plot(y, x). Perintah ini sah dan menghasilkan figur yang tampak wajar, tetapi kedua sumbu tertukar sehingga pembacaan nilai ikut salah. Kebiasaan pencegahannya adalah membaca pasangan sebagai horizontal dulu, vertikal kemudian, sama seperti penulisan koordinat (x, y).
Ringkasan#
- Panggilan
plot(x, y)menghubungkan titik-titik menjadi garis pada satu sumbu, dengan syarat kedua vektor berpanjang sama. - Satu panggilan
plotmenerima beberapa pasang data, dan string gaya pada tiap pasang mengatur gabungan warna, gaya garis, dan penanda seperti'b-','r--', atau'b-o'. - Penanda pada data rapat dikendalikan dengan
MarkerIndicespada MATLAB, sedangkan pola lintas implementasi menggambar kurva penuh bersama irisan data jarang dalam satu panggilan. - Batas sumbu diatur dengan
xlim,ylim,axis, danaxis tightsetelah kurva digambar.
Referensi#
- plot — MathWorks — Rujukan resmi fungsi plot lengkap dengan sintaks beberapa pasang data.
- Line Specification — MathWorks — Tabel kode warna, gaya garis, dan penanda beserta kombinasinya.
- axis — MathWorks — Rujukan pengaturan batas dan rasio sumbu.
- xlim — MathWorks — Rujukan pembatasan sumbu horizontal.
- print — MathWorks — Rujukan penyimpanan figur ke berkas gambar termasuk format SVG.