Topik ini menyusun mental model yang membuat seluruh matplotlib mudah dipahami: sebuah gambar dibangun dari objek berlapis, yaitu Figure sebagai wadah terluar, Axes sebagai satu area plot, dan Artist sebagai setiap elemen yang tampak di dalamnya. Setelah model ini kuat, kode matplotlib pada jalur ini dapat dibaca sebagai manipulasi objek yang eksplisit, dan nama metode seperti set_title atau savefig tidak lagi perlu dihafal.
Dua wadah: Figure dan Axes#
Figure adalah objek gambar tingkat atas pada matplotlib. Objek ini menyimpan seluruh elemen gambar beserta atribut fisiknya, seperti ukuran dalam inci dan kepadatan titik per inci, dan merupakan objek yang ditulis ke berkas ketika savefig dipanggil. Satu Figure dapat menampung beberapa Axes, sehingga satu berkas gambar dapat berisi beberapa panel sekaligus.
Axes adalah satu area plot dengan sistem koordinatnya sendiri. Pada grafik dua dimensi yang paling umum, area tersebut berpasangan dengan dua objek sumbu, yaitu XAxis untuk arah horizontal dan YAxis untuk arah vertikal, ditambah judul, label sumbu, legenda, dan penanda skala. Setiap titik data digambar dengan memetakan nilai data ke posisi piksel melalui skala milik Axes tersebut, sehingga panel yang berbeda dapat menggunakan rentang nilai yang berbeda pula.
Nama Axes sering disalahpahami karena terlihat seperti bentuk jamak dari “axis”. Pada kelas ini, satu Axes adalah satu objek utuh yang memuat dua sumbu, dan satu objek tersebut berpasangan dengan satu panel gambar. Kerancuan semacam ini hilang begitu struktur objeknya dilihat langsung, dan diagram berikut menempatkan ketiga tingkat itu pada satu gambar.
Artist sebagai elemen gambar#
Artist adalah sebutan untuk setiap elemen gambar yang tampak pada suatu Figure. Garis data adalah objek Line2D, kotak pada diagram batang adalah objek Rectangle, teks judul adalah objek Text, dan garis tepi area plot adalah objek Spine. Semuanya mewarisi kelas dasar yang sama, sehingga berbagi mekanisme pengaturan warna, ketebalan, dan visibilitas.
Artist terbagi dua kelompok menurut perannya. Artist primitif seperti Line2D, Text, dan Patch menggambar langsung, sedangkan artist wadah seperti Figure, Axes, dan Axis berfungsi menyimpan serta menata artist primitif tersebut. Axes menyimpan garis data pada daftar lines dan teks pada daftar texts, sehingga memeriksa daftar itu langsung menunjukkan isi panel.
Kerangka ini menjelaskan pola kerja matplotlib secara umum: mengubah tampilan berarti memanggil pengatur (setter) pada artist yang tepat. Pemanggilan ax.set_xlabel("Nilai") pada akhirnya mengubah isi objek Text milik sumbu x, dan ax.set_title("Judul") mengubah objek Text judul. Ketika sebuah grafik tidak tampak seperti yang diharapkan, pertanyaan teknisnya menjadi konkret, yaitu artist mana yang perlu diubah dan melalui metode apa.
Membaca struktur melalui introspeksi#
Struktur tiga tingkat tersebut dapat diverifikasi langsung dengan memeriksa objeknya. Skrip berikut membuat satu Figure dan satu Axes, menggambar satu garis, lalu mencetak tipe dan isi setiap tingkat. Perintah cetaknya dipilih agar keluaran menunjukkan hubungan wadah: fig.axes berisi daftar Axes milik figure, sedangkan ax.lines berisi daftar artist garis milik panel.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6, 3.5))
line, = ax.plot([1, 2, 3], [2, 4, 6])
print("tipe fig :", type(fig))
print("tipe ax :", type(ax))
print("jumlah Axes di fig :", len(fig.axes))
print("ukuran figure (inci) :", fig.get_size_inches())
print("tipe sumbu x :", type(ax.xaxis))
print("label sumbu x :", repr(ax.xaxis.get_label().get_text()))
print("artis garis :", type(line))
print("banyak artis garis :", len(ax.lines))
print("banyak artis teks :", len(ax.texts))
print("sisi spine :", list(ax.spines))tipe fig : <class 'matplotlib.figure.Figure'>
tipe ax : <class 'matplotlib.axes._axes.Axes'>
jumlah Axes di fig : 1
ukuran figure (inci) : [6. 3.5]
tipe sumbu x : <class 'matplotlib.axis.XAxis'>
label sumbu x : ''
artis garis : <class 'matplotlib.lines.Line2D'>
banyak artis garis : 1
banyak artis teks : 0
sisi spine : ['left', 'right', 'bottom', 'top']Keluaran memperlihatkan rantai kepemilikan yang konsisten dengan model. Tipe fig adalah matplotlib.figure.Figure, tipe ax adalah matplotlib.axes._axes.Axes, dan len(fig.axes) bernilai satu karena hanya ada satu panel. Setelah satu panggilan ax.plot, daftar ax.lines berisi satu objek Line2D, sedangkan daftar ax.texts masih kosong karena belum ada teks yang ditambahkan. Ukuran figure [6. 3.5] berarti enam inci kali tiga setengah inci, sesuai argumen figsize yang diberikan.
Tiga baris terakhir menambahkan detail yang berguna saat mengubah tampilan. ax.xaxis adalah objek XAxis, dan metode get_label() miliknya mengembalikan objek Text label sumbu yang belum berisi apa pun, tampak sebagai string kosong pada keluaran. Daftar ax.spines memuat empat objek Spine, yaitu garis tepi kiri, kanan, bawah, dan atas yang membentuk kotak panel.
Kesalahan umum#
Kesalahan pertama adalah memanggil pengatur panel pada objek yang keliru tingkatnya, misalnya mencari metode label sumbu di fig. Penyebabnya adalah menempatkan tanggung jawab pada wadah yang salah, dan kebiasaan itu muncul lebih sering setelah membaca contoh pyplot karena kedua gaya menempatkan titik panggilan yang mirip. Perbaikannya mengikuti pembagian peran pada model: metode seperti set_xlabel dan set_title milik Axes, sedangkan Figure mengurus halaman gambar seperti ukuran, susunan panel, dan penyimpanan berkas.
Kesalahan kedua adalah mengira ax.plot() membuat panel baru. Panggilan tersebut menambahkan artist Line2D pada panel yang sama, sedangkan panel baru dibuat dengan fig.add_subplot() atau plt.subplots(). Penyebab kebingungannya adalah kebiasaan dari gaya implisit, yaitu gaya yang membuat figure baru secara otomatis. Perbaikannya adalah memisahkan dua keputusan itu secara sadar, yaitu menambah data dengan metode milik panel dan menambah panel dengan metode milik figure. Ketika ragu, pencetakan type(...) serta panjang fig.axes dan ax.lines selalu menunjukkan objek yang sedang dimodifikasi.
Ringkasan#
Figureadalah wadah terluar yang menyimpan semua elemen gambar dan menjadi objek yang ditulis olehsavefig.Axesadalah satu area plot dengan sistem koordinat sendiri, dan satuFiguredapat memuat lebih dari satuAxes.- Setiap elemen yang tampak adalah Artist, baik primitif seperti
Line2D,Text, danPatch, maupun wadah sepertiFigure,Axes, danAxis. - Mengubah tampilan berarti memanggil pengatur pada artist yang tepat, misalnya
ax.set_xlabelmengubah objekTextmilik sumbu x.
Referensi#
- Quick start guide — Matplotlib — Pengantar resmi antarmuka berorientasi objek yang memperkenalkan Figure, Axes, dan metodenya.
- Introduction to Figures — Matplotlib — Penjelasan peran objek Figure beserta atribut dan metode miliknya.
- Axes API — Matplotlib — Daftar metode kelas Axes yang menjadi antarmuka utama pengubahan panel.
- matplotlib.figure.Figure — Matplotlib — Dokumentasi kelas Figure termasuk metode savefig dan atribut axes.