Data mentah berupa angka dan tabel sering kali sulit dipahami hanya dengan dilihat sekilas. Di sinilah Matplotlib berperan — library plotting paling populer di Python yang membantumu mengubah data menjadi grafik yang informatif dan menarik. Artikel ini akan memandumu dari nol: mulai dari instalasi, membuat line chart pertama, hingga kustomisasi dan integrasi dengan Pandas. Siap? Mari kita mulai!

Apa Itu Matplotlib dan Mengapa Penting?

Matplotlib adalah library open-source untuk membuat visualisasi data statis, animasi, dan interaktif di Python. Dibuat oleh John D. Hunter pada 2003, Matplotlib kini menjadi standar de facto untuk plotting di ekosistem data science, serta menjadi fondasi bagi library lain seperti Seaborn dan plotting bawaan Pandas. Baik kamu seorang data scientist, backend developer yang ingin membuat grafik laporan, maupun mahasiswa yang mengerjakan tugas analisis, kemampuan membuat grafik yang baik akan sangat membantumu menyampaikan insight.

Instalasi Matplotlib

Sebelum mulai, pastikan Python sudah terpasang di komputermu. Jika belum, baca dulu panduan cara install Python dan menulis program pertamamu. Setelah itu, instal Matplotlib dengan pip:

bash
pip install matplotlib

Jika kamu menggunakan uv sebagai package manager, cukup jalankan uv add matplotlib — lebih cepat dan otomatis mengelola virtual environment. Untuk memverifikasi instalasi berhasil, jalankan perintah berikut di terminal. Jika tidak muncul error, berarti Matplotlib siap digunakan:

bash
python -c "import matplotlib; print(matplotlib.__version__)"

Sebaiknya gunakan virtual environment untuk setiap proyek agar dependensi tetap terisolasi. Dengan uv, cukup jalankan uv init lalu uv add matplotlib — semuanya dikelola otomatis. Pelajari lebih lanjut di tutorial lengkap uv.

Grafik Pertamamu: Line Chart

Mari mulai dengan grafik paling sederhana: line chart. Grafik ini cocok untuk menampilkan tren data seiring waktu, misalnya pertumbuhan pengguna website. Simpan kode berikut sebagai grafik.py, lalu jalankan:

python
import matplotlib.pyplot as plt

bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
pengguna = [1200, 1450, 1600, 2100, 2800, 3500]

plt.plot(bulan, pengguna)
plt.show()

Fungsi plt.plot() menggambar garis berdasarkan data yang diberikan, sementara plt.show() menampilkan jendela grafik. Modul pyplot (diimpor sebagai plt) menyediakan antarmuka sederhana layaknya MATLAB untuk membuat grafik dengan cepat.

Kustomisasi Grafik: Judul, Label, Legenda, dan Gaya

Grafik tanpa judul dan label sumbu sulit dipahami pembaca. Berikut cara menambahkan elemen-elemen penting sekaligus mempercantik tampilannya:

python
import matplotlib.pyplot as plt

bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
pengguna = [1200, 1450, 1600, 2100, 2800, 3500]
target = [1000, 1300, 1700, 2000, 2600, 3200]

plt.plot(bulan, pengguna, marker="o", color="#e94560", linestyle="--", linewidth=2, label="Aktual")
plt.plot(bulan, target, marker="s", color="#4a90d9", linestyle="-", linewidth=2, label="Target")

plt.title("Pertumbuhan Pengguna Website")
plt.xlabel("Bulan")
plt.ylabel("Jumlah Pengguna")
plt.legend()
plt.grid(True)
plt.show()

Beberapa parameter penting: marker menentukan bentuk titik data, color mengatur warna (bisa nama warna atau kode hex), linestyle menentukan gaya garis, dan label memberi nama untuk ditampilkan di legenda. Jangan lupa memanggil plt.legend() agar label muncul.

Matplotlib punya banyak style bawaan. Jalankan plt.style.available untuk melihat daftarnya, lalu pilih dengan plt.style.use("seaborn-v0_8") atau plt.style.use("ggplot") agar grafik tampil lebih modern tanpa kustomisasi manual.

Jenis Grafik yang Umum Dipakai

Selain line chart, ada tiga jenis grafik lain yang paling sering dipakai: bar chart untuk perbandingan antar kategori, scatter plot untuk melihat hubungan antar dua variabel, dan histogram untuk distribusi data. Berikut contohnya satu per satu.

Bar Chart: Perbandingan Antar Kategori

python
import matplotlib.pyplot as plt

bahasa = ["Python", "JavaScript", "TypeScript", "Go", "Rust"]
popularitas = [85, 78, 70, 62, 55]

plt.bar(bahasa, popularitas, color="#4a90d9")
plt.title("Popularitas Bahasa Pemrograman")
plt.xlabel("Bahasa")
plt.ylabel("Skor Popularitas")
plt.show()

Scatter Plot: Hubungan Antar Dua Variabel

Scatter plot sangat berguna untuk melihat korelasi, misalnya hubungan antara jam belajar dan nilai ujian.

python
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
jam_belajar = np.random.uniform(0, 10, 100)
nilai_ujian = jam_belajar * 8 + np.random.normal(0, 8, 100)

plt.scatter(jam_belajar, nilai_ujian, alpha=0.7, color="#e94560")
plt.title("Hubungan Jam Belajar dan Nilai Ujian")
plt.xlabel("Jam Belajar per Minggu")
plt.ylabel("Nilai Ujian")
plt.show()

Histogram: Melihat Distribusi Data

python
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
data = np.random.normal(70, 10, 1000)

plt.hist(data, bins=30, color="#6c5ce7", edgecolor="white")
plt.title("Distribusi Nilai Ujian")
plt.xlabel("Nilai")
plt.ylabel("Frekuensi")
plt.show()

Subplot: Beberapa Grafik dalam Satu Figure

Kadang kamu ingin membandingkan beberapa grafik sekaligus. Gunakan plt.subplots() untuk membuat grid grafik dalam satu figure:

python
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

axes[0].plot(x, np.sin(x), color="tab:blue")
axes[0].set_title("sin(x)")

axes[1].plot(x, np.cos(x), color="tab:red")
axes[1].set_title("cos(x)")

plt.tight_layout()
plt.show()

Pendekatan ini menggunakan object-oriented API — kamu memegang objek fig dan axes secara eksplisit. Gaya ini lebih disarankan untuk proyek yang kompleks karena memberi kontrol penuh terhadap setiap grafik.

Menyimpan Grafik ke File

Setelah grafik jadi, kamu mungkin ingin menyimpannya untuk laporan, website, atau media sosial. Gunakan plt.savefig():

python
import matplotlib.pyplot as plt

bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
pengguna = [1200, 1450, 1600, 2100, 2800, 3500]

plt.plot(bulan, pengguna, marker="o")
plt.title("Pertumbuhan Pengguna Website")

# Simpan dengan resolusi tinggi
plt.savefig("grafik.png", dpi=300, bbox_inches="tight")

Parameter dpi menentukan resolusi (300 cocok untuk cetak), sedangkan bbox_inches="tight" menghilangkan whitespace berlebih di sekitar grafik. Matplotlib mendukung banyak format seperti PNG, JPG, SVG, dan PDF.

Panggil plt.savefig() sebelum plt.show(). Setelah plt.show() dipanggil, figure akan dikosongkan sehingga file yang tersimpan bisa jadi kosong.

Visualisasi Data dengan Pandas

Jika datamu sudah berbentuk DataFrame Pandas, kamu bisa langsung membuat grafik dengan metode .plot() tanpa menulis banyak kode — sangat praktis untuk eksplorasi data. Kalau kamu belum familiar dengan Pandas, baca dulu panduan lengkap Pandas untuk analisis data.

python
import matplotlib.pyplot as plt
import pandas as pd

data = {
    "bulan": ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"],
    "pengunjung": [3200, 4100, 3800, 5200, 6100, 7400],
    "pendaftar": [210, 340, 300, 480, 610, 800],
}

df = pd.DataFrame(data)

df.plot(x="bulan", y=["pengunjung", "pendaftar"], marker="o")
plt.title("Trafik Website per Bulan")
plt.xlabel("Bulan")
plt.ylabel("Jumlah")
plt.grid(True)
plt.show()

Metode .plot() pada DataFrame otomatis memanggil Matplotlib di balik layar. Kamu juga bisa menentukan jenis grafik lewat parameter kind, misalnya kind="bar" atau kind="scatter".

Visualisasi juga berperan besar dalam machine learning — misalnya memplot kurva loss saat melatih model atau memvisualisasikan hasil klasifikasi. Jika tertarik mendalami, lanjutkan ke tutorial membuat model klasifikasi pertama dengan Scikit-learn.

Kesimpulan

Selamat! Kamu kini bisa membuat line chart, bar chart, scatter plot, histogram, mengombinasikannya dalam subplot, mengustomisasi tampilan, menyimpan grafik ke file, bahkan membuat visualisasi langsung dari DataFrame Pandas. Matplotlib memang punya banyak sekali fitur, tetapi menguasai dasar-dasar di atas sudah cukup untuk sebagian besar kebutuhan sehari-hari. Teruslah bereksperimen dengan dataset milikmu sendiri — praktik adalah cara terbaik untuk mahir!