Pertemuan 04 - Visualisasi Data Dasar

Pertemuan 04 - Visualisasi Data Dasar

Membuat bar chart, pie chart, dan line chart dari data penjualan menggunakan Matplotlib di Google Colab.

Tujuan Praktikum

Setelah menyelesaikan praktikum ini, mahasiswa mampu:

  1. Menjelaskan peran Matplotlib dan memilih jenis grafik yang sesuai dengan data.
  2. Membuat dan mengustomisasi Bar Chart untuk membandingkan nilai antar kategori.
  3. Membuat dan mengustomisasi Pie Chart untuk menampilkan proporsi.
  4. Membuat dan mengustomisasi Line Chart untuk menampilkan tren dari waktu ke waktu.
  5. Menyimpan grafik sebagai file gambar.

Persiapan

Kebutuhan praktikum:

text
- 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):

python
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:

python
import pandas as pd
import matplotlib.pyplot as plt
matplotlib.pyplot lazim disingkat plt. 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:

text
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.

python
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:

text
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.

python
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()
Contoh bar chart

Penjelasan tiap baris:

  • plt.bar(x, y) — menggambar batang; x label kategori, y tinggi 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.

python
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()
Contoh pie chart

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.

python
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()
Contoh line chart

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.

python
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 sebelum plt.show(), karena show() 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
python
# 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:

  1. Bar Chart muncul dengan judul dan label sumbu; batang tertinggi adalah Laptop (60 unit).
  2. Pie Chart menampilkan dua irisan: Elektronik 63,5% dan Aksesoris 36,5%.
  3. Line Chart menampilkan garis tren melintasi 18 tanggal dengan lonjakan dan penurunan.
  4. File grafik_produk.png berhasil tersimpan.

Verifikasi nilai data yang menjadi dasar grafik:

python
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:

  1. Bar Chart — total penjualan (rupiah) per produk. Petunjuk: df.groupby("produk")["total"].sum().
  2. Pie Chart — proporsi jumlah barang terjual per kategori.
  3. Line Chart — tren total penjualan per tanggal.
  4. 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.