Skip to main content

Anatomi Matplotlib Figure

Ketika membuat visualisasi menggunakan Matplotlib, kita tidak hanya membuat sebuah "grafik".

Di balik sebuah grafik terdapat beberapa objek dan komponen yang saling berhubungan.

Memahami struktur tersebut akan membantu kita ketika mulai melakukan:

  • Kustomisasi grafik.
  • Membuat beberapa grafik sekaligus.
  • Mengatur ukuran Figure.
  • Membuat subplot.
  • Menambahkan title dan label.
  • Menyimpan grafik.
  • Mengatur layout visualisasi.

Struktur dasarnya dapat digambarkan sebagai:

Figure
│
└── Axes
│
├── X Axis
├── Y Axis
├── X Label
├── Y Label
├── Title
├── Plot
└── Legend / Grid / Tick

Pemahaman struktur ini merupakan dasar penting untuk menggunakan Object-Oriented API pada Matplotlib.

matplotlib

Komponen Utama Matplotlib Figure​

Beberapa komponen yang perlu dipahami:

KomponenPengertian
FigureContainer atau canvas utama
AxesArea tempat data diplot
AxisSumbu koordinat X atau Y
TitleJudul visualisasi
X LabelKeterangan sumbu X
Y LabelKeterangan sumbu Y
PlotRepresentasi visual dari data
TickPenanda nilai pada Axis
LegendKeterangan untuk data yang diplot

Figure​

Figure adalah container atau canvas utama dari sebuah visualisasi Matplotlib.

Ketika kita membuat:

fig, ax = plt.subplots()

variabel:

fig

merupakan objek Figure.

Secara sederhana:

Figure
┌───────────────────────────────────────┐
│ │
│ Canvas │
│ │
│ ┌───────────────────────┐ │
│ │ │ │
│ │ Axes │ │
│ │ │ │
│ └───────────────────────┘ │
│ │
└───────────────────────────────────────┘

Sebuah Figure dapat memiliki satu atau beberapa Axes.

Contohnya:

Figure
│
├── Axes 1
├── Axes 2
├── Axes 3
└── Axes 4

Konsep ini sangat penting ketika membuat beberapa grafik dalam satu Figure.

Axes​

Axes adalah area tempat data benar-benar diplot.

Ketika kita membuat:

fig, ax = plt.subplots()

variabel:

ax

merupakan objek Axes.

Di dalam Axes terdapat berbagai elemen visualisasi seperti:

  • Data.
  • X Axis.
  • Y Axis.
  • X Label.
  • Y Label.
  • Title.
  • Tick.
  • Grid.
  • Legend.

Contoh:

Figure
┌───────────────────────────────────────┐
│ │
│ Title │
│ │
│ Y Axis │
│ │ ● │
│ │ ● │
│ │ ● │
│ │ │
│ └──────────────────────── X Axis │
│ │
└───────────────────────────────────────┘

Perhatikan bahwa Axes bukan hanya sumbu.

Axes adalah keseluruhan area plotting yang memiliki Axis sebagai bagian di dalamnya.

Axes vs Axis​

Istilah Axes dan Axis sering tertukar.

Axes​

Axes adalah area tempat data diplot.

fig, ax = plt.subplots()

Variabel:

ax

adalah objek Axes.

Axis​

Axis adalah sumbu koordinat.

Pada grafik 2D biasanya terdapat:

X Axis
Y Axis

Secara konseptual:

Figure
↓
Axes
├── X Axis
└── Y Axis

Jadi:

Axes ≠ Axis

Axes adalah area plotting, sedangkan Axis adalah sumbu yang terdapat di dalamnya.

X Axis​

X Axis merupakan sumbu horizontal.

Contohnya:

X Axis
─────────────────────────────→
1 2 3 4 5

X Axis biasanya digunakan untuk merepresentasikan:

  • Waktu.
  • Kategori.
  • Nilai input.
  • Variabel independen.
  • Posisi.

Contohnya:

x = [1, 2, 3, 4, 5]

Y Axis​

Y Axis merupakan sumbu vertikal.

Y Axis
↑
50 │
40 │
30 │
20 │
10 │
└────────────────────→
X Axis

Y Axis dapat digunakan untuk merepresentasikan:

  • Nilai hasil.
  • Jumlah.
  • Harga.
  • Suhu.
  • Skor.
  • Variabel dependen.

Contohnya:

y = [10, 20, 30, 40, 50]

X Label​

X Label memberikan informasi mengenai apa yang direpresentasikan oleh sumbu X.

Contoh:

ax.set_xlabel("Bulan")

Jika grafik menampilkan penjualan bulanan, label:

Bulan

memberikan konteks kepada pembaca.

Y Label​

Y Label memberikan informasi mengenai apa yang direpresentasikan oleh sumbu Y.

Contoh:

ax.set_ylabel("Penjualan")

Dengan demikian pembaca mengetahui bahwa nilai pada Y Axis merupakan data penjualan.

Title​

Title merupakan judul utama dari sebuah visualisasi.

Contoh:

ax.set_title("Penjualan Bulanan")

Title membantu pembaca memahami konteks grafik tanpa harus membaca kode program.

Plot​

Plot adalah representasi visual dari data.

Beberapa jenis plot yang umum:

Line Plot
Scatter Plot
Bar Plot
Histogram
Box Plot

Contoh line plot:

ax.plot(x, y)

Contoh scatter plot:

ax.scatter(x, y)

Contoh bar plot:

ax.bar(x, y)

Jenis plot yang digunakan bergantung pada karakteristik data dan tujuan analisis.

Tick​

Tick merupakan penanda nilai pada Axis.

Contohnya:

Y Axis

50 ┤
40 ┤
30 ┤
20 ┤
10 ┤
└────────────────
1 2 3 4 5

Angka:

10
20
30
40
50

merupakan contoh tick pada Y Axis.

Sedangkan:

1
2
3
4
5

merupakan contoh tick pada X Axis.

Tick membantu pembaca membaca nilai pada grafik.

Legend​

Jika sebuah grafik memiliki beberapa data, kita dapat menggunakan legend untuk menjelaskan masing-masing data.

Contoh:

ax.plot(x, y1, label="Produk A")
ax.plot(x, y2, label="Produk B")

ax.legend()

Legend dapat membantu pembaca mengetahui garis atau marker mana yang mewakili masing-masing dataset.

Grid​

Grid merupakan garis bantu yang dapat digunakan untuk mempermudah pembacaan nilai.

Contoh:

ax.grid()

Grid dapat membantu ketika pembaca perlu memperkirakan nilai data berdasarkan posisi pada grafik.

Namun, penggunaannya tetap perlu disesuaikan dengan kebutuhan visualisasi.

Object-Oriented Workflow​

Sekarang kita akan melihat workflow standar menggunakan Object-Oriented API.

Secara umum:

1. Import library
↓
2. Siapkan data
↓
3. Buat Figure dan Axes
↓
4. Plot data
↓
5. Kustomisasi
↓
6. Simpan / tampilkan

Step 1 - Import Library​

Import Matplotlib:

import matplotlib.pyplot as plt

Jika menggunakan NumPy:

import numpy as np
import matplotlib.pyplot as plt

Step 2 - Menyiapkan Data​

Contoh sederhana:

x = [1, 2, 3, 4]
y = [11, 22, 33, 44]

Data tersebut akan digunakan sebagai:

X → [1, 2, 3, 4]

Y → [11, 22, 33, 44]

Sehingga titik yang diplot adalah:

(1, 11)
(2, 22)
(3, 33)
(4, 44)

Step 3 - Membuat Figure dan Axes​

Gunakan:

fig, ax = plt.subplots()

Sekarang kita memiliki:

fig → Figure
ax → Axes

Kita dapat memeriksa tipe objek tersebut:

print(type(fig))
print(type(ax))

Secara umum:

fig → matplotlib.figure.Figure
ax → matplotlib.axes.Axes

Step 4 - Menentukan Ukuran Figure​

Ukuran Figure dapat diatur menggunakan parameter figsize.

Contoh:

fig, ax = plt.subplots(figsize=(10, 5))

Formatnya:

figsize=(width, height)

Satuannya adalah inci.

Jadi:

figsize=(10, 5)

berarti:

Width = 10 inch
Height = 5 inch

Perlu diperhatikan bahwa figsize menentukan ukuran Figure, bukan jumlah pixel secara langsung.

Step 5 - Plot Data​

Setelah Axes dibuat, kita dapat memasukkan data:

ax.plot(x, y)

Sekarang data berada di dalam Axes.

Figure
└── Axes
└── Line Plot

Step 6 - Menambahkan Title dan Label​

Kita dapat menambahkan title dan label.

ax.set(
title="Contoh Plot Sederhana",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

Method set() memungkinkan kita mengatur beberapa property Axes sekaligus.

Alternatifnya, kita dapat menuliskannya satu per satu:

ax.set_title("Contoh Plot Sederhana")
ax.set_xlabel("Sumbu X")
ax.set_ylabel("Sumbu Y")

Kedua pendekatan tersebut dapat digunakan.

Mengapa Menggunakan ax.set()?​

Tanpa set():

ax.set_title("Contoh Plot")
ax.set_xlabel("Sumbu X")
ax.set_ylabel("Sumbu Y")

Dengan set():

ax.set(
title="Contoh Plot",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

Untuk beberapa property sederhana, set() membuat kode lebih ringkas.

Namun, ketika konfigurasi semakin kompleks, memanggil method secara terpisah sering kali membuat kode lebih mudah dibaca.

Step 7 - Menampilkan Grafik​

Setelah selesai membuat grafik, kita dapat menampilkannya:

plt.show()

Contoh lengkap:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [11, 22, 33, 44]

fig, ax = plt.subplots(figsize=(10, 5))

ax.plot(x, y)

ax.set(
title="Contoh Plot Sederhana",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

plt.show()

matplotlib

Step 8 - Menyimpan Grafik​

Figure dapat disimpan menggunakan:

fig.savefig("sample-plot.png")

Contoh lengkap:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [11, 22, 33, 44]

fig, ax = plt.subplots(figsize=(10, 5))

ax.plot(x, y)

ax.set(
title="Contoh Plot Sederhana",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

fig.savefig("sample-plot.png")

plt.show()

Perhatikan bahwa kita menggunakan:

fig.savefig()

karena kita ingin menyimpan Figure yang telah dibuat.

Workflow Lengkap​

Seluruh proses dapat diringkas menjadi:

# 1. Import
import matplotlib.pyplot as plt

# 2. Data
x = [1, 2, 3, 4]
y = [11, 22, 33, 44]

# 3. Figure dan Axes
fig, ax = plt.subplots(figsize=(10, 5))

# 4. Plot
ax.plot(x, y)

# 5. Customization
ax.set(
title="Contoh Plot Sederhana",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

# 6. Save
fig.savefig("sample-plot.png")

# 7. Show
plt.show()

Workflow tersebut menjadi pola dasar yang akan digunakan pada banyak materi Matplotlib berikutnya.

Visualisasi Struktur Figure​

Struktur kode:

fig, ax = plt.subplots()
│
├──────────────┐
↓ ↓
Figure Axes
│ │
│ ├── Plot
│ ├── X Axis
│ ├── Y Axis
│ ├── Title
│ ├── X Label
│ ├── Y Label
│ ├── Tick
│ └── Legend
│
└── Save / Layout / Size

Dengan memahami struktur ini, kode Matplotlib akan lebih mudah dipahami.

Menggunakan NumPy dengan Matplotlib​

Matplotlib dapat bekerja langsung dengan NumPy Array.

Contoh:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10)
y = x ** 2

fig, ax = plt.subplots(figsize=(10, 5))

ax.plot(x, y)

ax.set(
title="Fungsi Kuadrat",
xlabel="X",
ylabel="Y"
)

plt.show()

Workflow:

NumPy
↓
Membuat data
↓
Matplotlib
↓
Figure + Axes
↓
Plot
↓
Visualization

Ini merupakan salah satu kombinasi yang sangat umum dalam Data Science.

Satu Figure dengan Satu Axes​

Kasus paling sederhana adalah satu Figure dengan satu Axes.

fig, ax = plt.subplots()

Strukturnya:

Figure
└── Axes

Contoh:

fig, ax = plt.subplots()

ax.plot(x, y)

plt.show()

Satu Figure dengan Banyak Axes​

Matplotlib juga memungkinkan kita membuat beberapa Axes dalam satu Figure.

Contoh:

fig, ax = plt.subplots(2, 2)

Strukturnya:

Figure
├── Axes 1
├── Axes 2
├── Axes 3
└── Axes 4

Secara visual:

┌───────────────┬───────────────┐
│ Axes 1 │ Axes 2 │
│ │ │
├───────────────┼───────────────┤
│ Axes 3 │ Axes 4 │
│ │ │
└───────────────┴───────────────┘

Konsep ini akan dipelajari lebih lanjut ketika membahas subplots.

Mengapa Memahami Anatomy Figure Penting?​

Tanpa memahami struktur Figure dan Axes, kita mungkin hanya menghafalkan kode:

plt.plot()

Namun ketika kebutuhan visualisasi bertambah, kita akan menemukan kode seperti:

fig, ax = plt.subplots()

atau:

fig, ax = plt.subplots(2, 2)

Kemudian:

ax[0, 0].plot()
ax[0, 1].scatter()
ax[1, 0].bar()
ax[1, 1].hist()

Jika kita sudah memahami hubungan:

Figure
↓
Axes
↓
Plot

maka struktur kode tersebut menjadi lebih mudah dipahami.

Kesalahan Konsep yang Sering Terjadi​

Menganggap Figure sebagai Grafik​

Figure bukan sekadar grafik.

Figure merupakan container utama yang dapat menampung satu atau beberapa Axes.

Figure
├── Axes 1
├── Axes 2
└── Axes 3

Menganggap Axes Sama dengan Axis​

Ini juga sering terjadi.

Axes
├── X Axis
└── Y Axis

Jadi Axes merupakan area plotting, sedangkan Axis merupakan sumbu.

Menganggap figsize Menggunakan Pixel​

Contoh:

figsize=(10, 5)

bukan berarti:

1000 × 500 pixel

figsize menggunakan satuan inch.

Resolusi output dapat dipengaruhi oleh parameter dpi.

Contohnya:

fig, ax = plt.subplots(
figsize=(10, 5),
dpi=100
)

Secara konseptual ukuran raster dapat berkaitan dengan:

width = 10 × 100 = 1000 pixel
height = 5 × 100 = 500 pixel

Ringkasan​

Anatomy sebuah visualisasi Matplotlib dapat dipahami melalui struktur:

Figure
↓
Axes
↓
Axis + Plot + Labels + Title + Tick + Legend

Figure​

Merupakan container atau canvas utama.

fig

Axes​

Merupakan area tempat data diplot.

ax

Axis​

Merupakan sumbu koordinat:

X Axis
Y Axis

Title​

Memberikan judul visualisasi:

ax.set_title("Judul")

X Label​

Memberikan keterangan sumbu X:

ax.set_xlabel("X")

Y Label​

Memberikan keterangan sumbu Y:

ax.set_ylabel("Y")

figsize​

Mengatur ukuran Figure dalam inci:

fig, ax = plt.subplots(figsize=(10, 5))

ax.set()​

Memungkinkan beberapa property Axes diatur sekaligus:

ax.set(
title="Judul",
xlabel="X",
ylabel="Y"
)

fig.savefig()​

Menyimpan Figure:

fig.savefig("sample-plot.png")

Cheat Sheet​

import matplotlib.pyplot as plt

# Data
x = [1, 2, 3, 4]
y = [11, 22, 33, 44]

# Figure + Axes
fig, ax = plt.subplots(figsize=(10, 5))

# Plot
ax.plot(x, y)

# Customization
ax.set(
title="Contoh Plot",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

# Save
fig.savefig("sample-plot.png")

# Show
plt.show()

Struktur utamanya:

fig
↓
Figure

ax
↓
Axes
↓
plot()
set()
grid()
legend()

Checklist Pembelajaran​

Setelah menyelesaikan materi ini, Anda seharusnya dapat:

  • Menjelaskan apa itu Figure.
  • Menjelaskan apa itu Axes.
  • Membedakan Axes dan Axis.
  • Menjelaskan fungsi X Axis.
  • Menjelaskan fungsi Y Axis.
  • Menjelaskan fungsi X Label.
  • Menjelaskan fungsi Y Label.
  • Menjelaskan fungsi Title.
  • Memahami Tick dan Legend.
  • Membuat Figure menggunakan plt.subplots().
  • Membuat Axes menggunakan plt.subplots().
  • Mengatur ukuran Figure menggunakan figsize.
  • Melakukan plotting menggunakan ax.plot().
  • Menggunakan ax.set().
  • Menyimpan Figure menggunakan fig.savefig().
  • Memahami hubungan Figure → Axes → Axis → Plot.

Latihan​

Latihan 1 - Anatomy Figure​

Buat sebuah Figure dan Axes:

fig, ax = plt.subplots()

Kemudian periksa:

print(type(fig))
print(type(ax))

Jelaskan perbedaan kedua objek tersebut.

Latihan 2 - Membuat Plot​

Gunakan:

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 30, 25]

Buat sebuah line plot menggunakan:

ax.plot(x, y)

Tambahkan:

  • Title.
  • X Label.
  • Y Label.
  • Grid.

Latihan 3 - Mengatur Ukuran Figure​

Buat Figure dengan ukuran:

figsize=(12, 6)

Kemudian bandingkan hasilnya dengan:

figsize=(6, 3)

Perhatikan perbedaan ukuran visualisasi.

Latihan 4 - Menyimpan Figure​

Buat sebuah grafik kemudian simpan sebagai:

fig.savefig("latihan-matplotlib.png")

Pastikan file berhasil dibuat.

Latihan 5 - Eksplorasi​

Coba buat grafik menggunakan:

fig, ax = plt.subplots()

ax.plot(x, y)

ax.set_title("Data Saya")
ax.set_xlabel("X")
ax.set_ylabel("Y")

ax.grid()

plt.show()

Kemudian identifikasi bagian berikut pada hasil visualisasi:

Figure
Axes
X Axis
Y Axis
Title
X Label
Y Label
Tick
Plot
Grid