Tujuan Praktikum
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
- Menjelaskan peran Matplotlib dan memilih jenis grafik yang sesuai dengan data.
- Membuat dan mengustomisasi Bar Chart untuk membandingkan nilai antar kategori.
- Membuat dan mengustomisasi Pie Chart untuk menampilkan proporsi.
- Membuat dan mengustomisasi Line Chart untuk menampilkan tren dari waktu ke waktu.
- Menyimpan grafik sebagai file gambar.
Persiapan
Kebutuhan praktikum:
- Akun Google
- Google Colab
- Koneksi internet
- Dataset penjualan.csv (data bersih, hasil dari Pertemuan 03)
Buat notebook baru bernama
Pertemuan04_NamaAnda.ipynb, lalu jalankan cell
berikut untuk menyiapkan data bersih (file dibuat otomatis di
runtime):
data_csv = """tanggal,produk,kategori,qty,harga
2025-01-05,Keyboard,Aksesoris,8,250000
2025-01-05,Mouse,Aksesoris,4,150000
2025-01-08,Keyboard,Aksesoris,8,250000
2025-01-11,Keyboard,Aksesoris,3,250000
2025-01-11,Laptop,Elektronik,8,8500000
2025-01-11,Printer,Elektronik,3,1500000
2025-01-14,Keyboard,Aksesoris,1,250000
2025-01-17,Mouse,Aksesoris,8,150000
2025-01-17,Keyboard,Aksesoris,3,250000
2025-01-17,Keyboard,Aksesoris,1,250000
2025-01-20,Laptop,Elektronik,1,8500000
2025-01-20,Laptop,Elektronik,4,8500000
2025-01-20,Monitor,Elektronik,1,2000000
2025-01-23,Printer,Elektronik,8,1500000
2025-01-23,Keyboard,Aksesoris,4,250000
2025-01-26,Monitor,Elektronik,5,2000000
2025-01-26,Mouse,Aksesoris,1,150000
2025-01-26,Laptop,Elektronik,8,8500000
2025-01-29,Printer,Elektronik,7,1500000
2025-01-29,Keyboard,Aksesoris,2,250000
2025-01-29,Printer,Elektronik,6,1500000
2025-02-01,Keyboard,Aksesoris,5,250000
2025-02-04,Laptop,Elektronik,2,8500000
2025-02-07,Laptop,Elektronik,5,8500000
2025-02-07,Mouse,Aksesoris,2,150000
2025-02-10,Laptop,Elektronik,4,8500000
2025-02-13,Laptop,Elektronik,8,8500000
2025-02-16,Mouse,Aksesoris,7,150000
2025-02-16,Laptop,Elektronik,4,8500000
2025-02-19,Printer,Elektronik,6,1500000
2025-02-19,Laptop,Elektronik,5,8500000
2025-02-19,Printer,Elektronik,1,1500000
2025-02-22,Laptop,Elektronik,3,8500000
2025-02-22,Monitor,Elektronik,2,2000000
2025-02-25,Laptop,Elektronik,8,8500000
"""
with open("penjualan.csv", "w") as f:
f.write(data_csv)
print("File penjualan.csv siap digunakan.")
Lalu impor library yang dibutuhkan:
import pandas as pd
import matplotlib.pyplot as plt
matplotlib.pyplotlazim disingkatplt. Di Google Colab, grafik otomatis tampil di bawah cell tanpa konfigurasi tambahan.
Konsep Singkat
Matplotlib adalah library visualisasi paling fundamental di Python. Angka dalam tabel sulit "dirasakan"; grafik membuat pola, perbandingan, dan tren langsung terlihat mata.
Alur Dasar Membuat Grafik
Hampir semua grafik mengikuti pola yang sama:
1. Siapkan data (biasanya hasil groupby)
2. Panggil fungsi plot (plt.bar / plt.pie / plt.plot)
3. Beri judul & label (plt.title, plt.xlabel, plt.ylabel)
4. Tampilkan (plt.show)
Memilih Jenis Grafik
Memilih grafik yang tepat sama pentingnya dengan membuatnya. Grafik yang salah bisa menyesatkan.
| Jenis | Cocok untuk | Contoh pertanyaan |
|---|---|---|
| Bar Chart | Membandingkan nilai antar kategori | "Produk mana yang paling laku?" |
| Pie Chart | Menampilkan proporsi terhadap keseluruhan (sedikit kategori) | "Berapa porsi tiap kategori?" |
| Line Chart | Menampilkan perubahan/tren sepanjang waktu | "Bagaimana tren penjualan harian?" |
Aturan praktis: gunakan pie hanya bila kategorinya sedikit (2–5). Untuk membandingkan banyak kategori, bar lebih mudah dibaca.
Langkah 1 - Menyiapkan Data Agregat
Grafik dibuat dari data yang sudah diringkas,
bukan dari data mentah baris per baris. Kita siapkan tiga
ringkasan dengan groupby (teknik dari Pertemuan 02),
satu untuk tiap grafik.
df = pd.read_csv("penjualan.csv")
df["total"] = df["qty"] * df["harga"]
# untuk Bar Chart: total barang terjual per produk
qty_produk = df.groupby("produk")["qty"].sum().sort_values(ascending=False)
# untuk Pie Chart: jumlah barang terjual per kategori
qty_kategori = df.groupby("kategori")["qty"].sum()
# untuk Line Chart: total penjualan per tanggal
jual_tanggal = df.groupby("tanggal")["total"].sum()
print(qty_produk)
print(qty_kategori)
Output:
produk
Laptop 60
Keyboard 35
Printer 31
Mouse 22
Monitor 8
Name: qty, dtype: int64
kategori
Aksesoris 57
Elektronik 99
Name: qty, dtype: int64
Langkah 2 - Bar Chart
Bar chart membandingkan nilai antar kategori. Sumbu-X berisi produk, sumbu-Y jumlah barang.
plt.bar(qty_produk.index, qty_produk.values, color="#4C8BF5")
plt.title("Total Barang Terjual per Produk")
plt.xlabel("Produk")
plt.ylabel("Jumlah (unit)")
plt.show()
Penjelasan tiap baris:
-
plt.bar(x, y)— menggambar batang;xlabel kategori,ytinggi batang. -
color="#4C8BF5"— warna batang (boleh nama seperti"red"atau kode hex). -
plt.title,plt.xlabel,plt.ylabel— judul dan label sumbu. -
plt.show()— menampilkan grafik dan menutup gambar saat ini.
Karena qty_produk sudah diurutkan menurun, batang
otomatis tampil dari yang terlaris (Laptop) ke yang paling sedikit
(Monitor).
Langkah 3 - Pie Chart
Pie chart menampilkan proporsi tiap bagian terhadap keseluruhan. Cocok untuk perbandingan antar kategori yang jumlahnya sedikit.
plt.pie(
qty_kategori.values,
labels=qty_kategori.index,
autopct="%1.1f%%",
colors=["#F5A623", "#4C8BF5"],
startangle=90
)
plt.title("Proporsi Jumlah Barang Terjual per Kategori")
plt.show()
Penjelasan parameter penting:
labels=— teks label tiap irisan.-
autopct="%1.1f%%"— menampilkan persentase otomatis dengan 1 angka desimal. -
startangle=90— memutar awal irisan agar tampilan lebih rapi. -
colors=— daftar warna untuk tiap irisan (urut sesuai data).
Hasilnya: Elektronik 63,5% dan Aksesoris 36,5%. Inilah sebabnya pie chart efektif untuk 2–5 kategori — proporsinya langsung terbaca.
Langkah 4 - Line Chart
Line chart menampilkan perubahan nilai sepanjang waktu. Sumbu-X berisi tanggal, sumbu-Y total penjualan.
plt.figure(figsize=(9, 4.5))
plt.plot(jual_tanggal.index, jual_tanggal.values, marker="o", color="#34A853")
plt.title("Tren Total Penjualan per Tanggal")
plt.xlabel("Tanggal")
plt.ylabel("Total Penjualan (Rp)")
plt.xticks(rotation=45, ha="right")
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
Penjelasan baris baru:
-
plt.figure(figsize=(9, 4.5))— mengatur ukuran kanvas (lebar, tinggi) dalam inci. -
marker="o"— menandai tiap titik data dengan lingkaran. -
plt.xticks(rotation=45, ha="right")— memiringkan label tanggal agar tidak bertumpuk. -
plt.grid(True, alpha=0.3)— menambahkan garis bantu samar. -
plt.tight_layout()— merapikan jarak agar label tidak terpotong.
Dari grafik terlihat penjualan berfluktuasi tajam: lonjakan terjadi pada tanggal dengan transaksi Laptop (harga tinggi), sementara hari tanpa Laptop bernilai rendah.
Langkah 5 - Mempercantik dan Menyimpan
Beberapa sentuhan agar grafik lebih profesional, lalu menyimpannya sebagai file gambar.
plt.figure(figsize=(8, 4.5))
plt.bar(qty_produk.index, qty_produk.values, color="#4C8BF5")
plt.title("Total Barang Terjual per Produk", fontsize=14, fontweight="bold")
plt.xlabel("Produk")
plt.ylabel("Jumlah (unit)")
# tampilkan angka di atas tiap batang
for i, nilai in enumerate(qty_produk.values):
plt.text(i, nilai + 0.5, str(nilai), ha="center")
plt.tight_layout()
plt.savefig("grafik_produk.png", dpi=120) # simpan ke file
plt.show()
Penjelasan tambahan:
-
fontsize,fontweight— mengatur ukuran dan ketebalan teks. -
plt.text(x, y, teks)— menulis teks pada koordinat tertentu (di sini, label angka di atas batang). -
plt.savefig("nama.png", dpi=120)— menyimpan grafik sebagai gambar. Letakkan sebelumplt.show(), karenashow()mengosongkan kanvas.
File grafik_produk.png muncul di panel Files Colab
dan bisa diunduh.
Referensi Fungsi Penting
Rangkuman fungsi Matplotlib yang relevan agar mahasiswa dapat bereksperimen lebih jauh. Semua dapat langsung disalin.
Fungsi Inti
| Perintah | Fungsi |
|---|---|
plt.figure(figsize=(l, t)) |
Membuat kanvas baru dengan ukuran tertentu |
plt.show() |
Menampilkan grafik dan menutup kanvas |
plt.savefig("nama.png", dpi=120)
|
Menyimpan grafik ke file gambar |
plt.tight_layout() |
Merapikan jarak agar label tidak terpotong |
plt.clf() |
Mengosongkan kanvas (mulai grafik baru) |
Jenis Grafik
| Perintah | Grafik |
|---|---|
plt.bar(x, y) |
Batang vertikal |
plt.barh(x, y) |
Batang horizontal (cocok bila label panjang) |
plt.pie(nilai, labels=...) |
Lingkaran proporsi |
plt.plot(x, y) |
Garis (tren) |
plt.scatter(x, y) |
Titik sebar (hubungan dua variabel) |
plt.hist(data, bins=10) |
Histogram (sebaran nilai) |
Kustomisasi
| Perintah | Fungsi |
|---|---|
plt.title("...") |
Judul grafik |
plt.xlabel("...") /
plt.ylabel("...")
|
Label sumbu X / Y |
plt.legend() |
Menampilkan keterangan (legenda) |
plt.grid(True, alpha=0.3) |
Garis bantu |
plt.xticks(rotation=45) |
Memutar label sumbu X |
plt.ylim(0, 100) |
Mengatur batas sumbu Y |
color=, figsize=,
marker=
|
Warna, ukuran kanvas, penanda titik |
# contoh: bar chart horizontal yang sudah dikustomisasi
plt.figure(figsize=(8, 4))
plt.barh(qty_produk.index, qty_produk.values, color="#34A853")
plt.title("Total Barang Terjual per Produk")
plt.xlabel("Jumlah (unit)")
plt.tight_layout()
plt.show()
Pengujian
Pastikan hasil praktikum sesuai berikut:
- Bar Chart muncul dengan judul dan label sumbu; batang tertinggi adalah Laptop (60 unit).
- Pie Chart menampilkan dua irisan: Elektronik 63,5% dan Aksesoris 36,5%.
- Line Chart menampilkan garis tren melintasi 18 tanggal dengan lonjakan dan penurunan.
- File
grafik_produk.pngberhasil tersimpan.
Verifikasi nilai data yang menjadi dasar grafik:
assert qty_produk.idxmax() == "Laptop"
assert qty_produk.max() == 60
assert round(qty_kategori["Elektronik"] / qty_kategori.sum() * 100, 1) == 63.5
print("Data dasar grafik sudah benar.")
Troubleshooting
| Masalah | Penyebab | Solusi |
|---|---|---|
| Grafik tidak muncul | Lupa memanggil plt.show() |
Tambahkan plt.show() di akhir |
| Label sumbu X bertumpuk | Teks terlalu panjang/banyak |
plt.xticks(rotation=45) dan/atau perbesar
figsize
|
File hasil savefig kosong |
savefig ditulis setelah
plt.show()
|
Pindahkan savefig sebelum show()
|
| Pie chart terlihat lonjong | Skala sumbu tidak sama | Tambahkan plt.axis("equal") |
Sumbu Y tampil 1e7 |
Notasi ilmiah untuk angka besar |
plt.ticklabel_format(style="plain",
axis="y")
|
| Dua grafik tercampur jadi satu | Lupa kanvas baru |
Awali dengan plt.figure() untuk tiap grafik
|
Tugas Praktikum
Buat laporan (format PDF) berisi tiga grafik dari dataset, masing-masing dengan judul dan label yang benar, beserta interpretasi singkat (1–2 kalimat) tiap grafik:
-
Bar Chart — total penjualan (rupiah) per
produk. Petunjuk:
df.groupby("produk")["total"].sum(). - Pie Chart — proporsi jumlah barang terjual per kategori.
- Line Chart — tren total penjualan per tanggal.
-
Bonus: ubah salah satu grafik menjadi
barh(horizontal) dan simpan sebagai file PNG.
Tips: ekspor notebook ke PDF melalui menu File → Print → Save as PDF.
Kesimpulan
Pada pertemuan ini mahasiswa belajar mengubah angka menjadi gambar yang bermakna menggunakan Matplotlib. Mahasiswa membuat tiga jenis grafik dasar — bar chart untuk membandingkan, pie chart untuk proporsi, dan line chart untuk tren — lengkap dengan judul, label, kustomisasi, dan cara menyimpannya. Keterampilan memilih grafik yang tepat sama pentingnya dengan membuatnya. Fondasi ini akan diperdalam pada pertemuan berikutnya dengan Seaborn, yang menghasilkan visualisasi statistik yang lebih kaya dengan kode yang lebih ringkas.