Arsitektur Figure dan Axes
Pahami hierarki Figure-Axes-Artist, buat plot dengan plt.subplots(), dan bedakan API tanpa status dari API berorientasi objek.
Arsitektur Figure dan Axes adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Mempelajari Arsitektur Matplotlib?
Pandas dan Seaborn sama-sama menggunakan Matplotlib secara internal. Memahami hierarki objek Matplotlib memungkinkan Anda mengendalikan setiap aspek plot — mulai dari kanvas keseluruhan hingga tanda skala individual — dan menggabungkan beberapa bagan dalam satu figur. Tanpa memahami model Figure-Axes, menyesuaikan plot dengan cepat menjadi kegiatan yang membuat frustrasi karena harus menebak fungsi mana yang perlu dipanggil.
Figur: Kanvas
Figur adalah wadah terluar — seluruh jendela atau berkas gambar. Figur memuat satu atau beberapa objek sumbu (area plot sebenarnya), serta judul, legenda bersama, dan ruang kosong. Anda membuat Figur dengan plt.figure() atau secara implisit melalui plt.subplots(). Sebagian besar properti yang ditetapkan pada Figur memengaruhi seluruh kanvas: ukuran, warna latar belakang, dan judul keseluruhan.
import matplotlib.pyplot as plt
import numpy as np
# Create a Figure with a specific size
fig = plt.figure(figsize=(8, 4)) # width=8 inches, height=4 inches
print(type(fig)) # matplotlib.figure.Figure
print('Figure size:', fig.get_size_inches())
plt.close() # close to avoid display in scriptsSumbu: Tempat Pembuatan Plot
Objek sumbu adalah satu area plot di dalam Figur. Objek ini berisi sumbu-x, sumbu-y, tanda skala, garis kisi, dan semua elemen visual (garis, batang, titik sebar). Sebagian besar pemanggilan plot merupakan metode pada objek sumbu: ax.plot(), ax.bar(), ax.scatter(). Satu Figur dapat memuat beberapa sumbu yang disusun sebagai kisi subplot.
fig, ax = plt.subplots() # Creates Figure + one Axes
print(type(ax)) # matplotlib.axes.Axes
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x)) # plot on the Axes
plt.tight_layout()
# plt.show()
plt.close()plt.subplots(): Membuat Figur dan Sumbu Bersamaan
plt.subplots(nrows, ncols) adalah cara yang disarankan untuk membuat Figur dengan satu atau beberapa sumbu dalam tata letak kisi. Fungsi ini mengembalikan tuple (fig, ax) (atau (fig, axes_array) untuk beberapa subplot). Parameter figsize menetapkan ukuran total kanvas dalam inci. Selalu uraikan hasilnya ke dalam variabel bernama agar lebih jelas.
# Single plot
fig, ax = plt.subplots(figsize=(6, 4))
# 2 rows, 1 column
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(6, 8))
# 2 rows, 2 columns
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
ax_top_left = axes[0, 0]
ax_top_right = axes[0, 1]
print('axes shape:', axes.shape) # (2, 2)
plt.close('all')API Berorientasi Objek vs Berbasis Status
Matplotlib memiliki dua gaya penggunaan. API berbasis status (pyplot) menggunakan plt.plot(), plt.xlabel(), dan sebagainya, serta bekerja pada sumbu 'saat ini' — praktis untuk eksplorasi interaktif cepat. API berorientasi objek (OO) secara eksplisit memanggil metode pada objek ax: ax.plot(), ax.set_xlabel(). API OO sangat disarankan untuk kode produksi dan figur dengan banyak panel karena memperjelas sumbu mana yang sedang diubah.
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
# Stateful API (convenient but fragile)
# plt.plot(x, y)
# plt.xlabel('x')
# plt.title('Squares')
# Object-oriented API (preferred)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_title('Squares')
plt.close()Artis: Komponen Penyusun
Segala sesuatu yang terlihat dalam plot Matplotlib adalah elemen visual: Figure, Axes, garis, teks, patch (persegi panjang untuk batang), dan penanda. Hierarki Figure-Axes-Artist mengalir dari wadah terluar hingga elemen visual terkecil. Memahami hierarki ini membantu Anda menemukan dan mengubah elemen apa pun secara terprogram — misalnya, mengubah warna batang tertentu setelah grafik digambar.
fig, ax = plt.subplots()
line, = ax.plot([1, 2, 3], [1, 4, 9], color='blue', linewidth=2)
# Introspect the hierarchy
print('Figure:', type(fig))
print('Axes:', type(ax))
print('Line Artist:', type(line))
print('Line color:', line.get_color())
plt.close()Objek Sumbu: XAxis dan YAxis
Setiap Axes berisi dua objek Axis (jangan tertukar dengan Axes): ax.xaxis dan ax.yaxis. Objek-objek ini mengatur tanda skala, label tanda skala, dan spine (garis yang terlihat). Anda dapat menetapkan batas sumbu dengan ax.set_xlim() dan ax.set_ylim(), mengatur frekuensi tanda skala dengan ax.set_xticks(), serta memformat label dengan ax.xaxis.set_major_formatter().
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 40, 30, 70])
ax.set_xlim(0, 5)
ax.set_ylim(0, 80)
ax.set_xticks([1, 2, 3, 4])
ax.set_xticklabels(['Q1', 'Q2', 'Q3', 'Q4'])
ax.set_xlabel('Quarter')
ax.set_ylabel('Revenue')
plt.close()Sumbu Bersama untuk Plot Multi-Panel
Saat membuat kisi subplot, teruskan sharex=True atau sharey=True ke plt.subplots() untuk menghubungkan skala sumbu di seluruh panel. Ini berarti memperbesar atau menggeser satu subplot akan otomatis memperbarui semua panel yang menggunakan sumbu tersebut — hal yang penting untuk membandingkan deret waktu dari beberapa kelompok ketika rentang sumbu-x yang sama harus ditampilkan di setiap panel.
import numpy as np
x = np.arange(10)
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(6, 5))
ax1.plot(x, x**2, color='blue')
ax1.set_title('Squares')
ax2.plot(x, x**3, color='red')
ax2.set_title('Cubes')
fig.suptitle('Powers of x') # shared figure title
plt.tight_layout()
plt.close()Mengatur Jarak dengan tight_layout()
plt.tight_layout() (atau fig.tight_layout()) secara otomatis menyesuaikan parameter subplot untuk meminimalkan tumpang tindih antara label, judul, dan tanda skala. Panggil fungsi ini tepat sebelum plt.show() atau fig.savefig(). Untuk pengaturan yang lebih terperinci, gunakan plt.subplots_adjust(hspace=, wspace=) untuk menetapkan jarak vertikal dan horizontal antar-subplot secara manual.
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
for i, ax in enumerate(axes.flat):
ax.plot([1, 2, 3], [i, i+1, i+2])
ax.set_title(f'Panel {i+1}')
ax.set_xlabel('x axis label')
ax.set_ylabel('y axis label')
fig.suptitle('Grid of Plots', y=1.02)
plt.tight_layout() # prevents overlapping labels
plt.close()Mengakses Axes dari subplots()
Saat plt.subplots(nrows, ncols) mengembalikan beberapa axes, objek-objek tersebut dikemas dalam array NumPy dengan bentuk (nrows, ncols). Indeks objek tersebut seperti pada array 2D mana pun: axes[0, 1] untuk baris pertama dan kolom kedua. Gunakan axes.flat untuk melakukan iterasi pada semua axes dalam urutan baris-terlebih dahulu, apa pun bentuk kisinya — sangat praktis untuk menerapkan pemformatan yang sama ke setiap panel.
fig, axes = plt.subplots(2, 3, figsize=(12, 6))
# Access by row, column
axes[0, 0].set_title('Top Left')
axes[1, 2].set_title('Bottom Right')
# Iterate over all axes
for ax in axes.flat:
ax.set_xlabel('Time')
ax.set_ylabel('Value')
plt.tight_layout()
plt.close()Menghapus Axes yang Tidak Digunakan
Saat Anda membuat kisi subplot tetapi tidak menggunakan setiap panel, axes yang kosong tetap menampilkan batas bingkai. Panggil ax.set_visible(False) atau fig.delaxes(ax) untuk menyembunyikan atau menghapus axes yang tidak digunakan. Pola yang umum adalah melakukan iterasi pada axes.flat dan menyembunyikan semua panel setelah jumlah deret data yang Anda gambar, sehingga gambar tetap rapi.
fig, axes = plt.subplots(2, 3, figsize=(12, 6))
data_panels = 4 # only 4 plots needed in a 2x3 grid
for i, ax in enumerate(axes.flat):
if i < data_panels:
ax.plot([1, 2, 3], [i, i+1, i+2])
ax.set_title(f'Panel {i+1}')
else:
ax.set_visible(False) # hide extra panels
plt.tight_layout()
plt.close()Pemeriksaan Singkat
Uji pemahaman Anda tentang arsitektur Figure dan Axes pada Matplotlib dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa Figure adalah seluruh kanvas dan Axes adalah satu area plot di dalamnya; plt.subplots() membuat keduanya sekaligus dan mengembalikan (fig, ax); API berorientasi objek (ax.plot(), ax.set_xlabel()) lebih disarankan daripada API pyplot berbasis status; serta tight_layout() mencegah label saling tumpang tindih pada gambar multi-panel. Selanjutnya, kita akan membuat plot garis dan plot sebar dengan kendali penuh atas gayanya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Arsitektur Figure dan Axes” gratis?
Ya — teks lengkap “Arsitektur Figure dan Axes” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Arsitektur Figure dan Axes”?
Pahami hierarki Figure-Axes-Artist, buat plot dengan plt.subplots(), dan bedakan API tanpa status dari API berorientasi objek. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Arsitektur Figure dan Axes” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Arsitektur Figure dan Axes
- Plot Garis dan Sebaran
- Diagram Batang dan Histogram
- Label, Judul, dan Menyimpan Figure