Kita menggunakan data untuk membantu memahami fenomena yang terjadi di dunia nyata. Kita mencoba menemukan pola, trend, hubungan, dan lain sebagainya, dan menggunakannya untuk menggali wawasan dan mengambil keputusan.
Salah satu sarana terpenting untuk memahami dan mengkomunikasikan informasi dari sekumpulan data adalah visualisasi. Manusia lebih cepat menangkap pola visual daripada data berupa kumpulan angka.
Visualisasi data dapat membantu kita dalam :
- Memahami Data: Visualisasi membantu kita memahami pola, tren, dan hubungan dalam data yang mungkin sulit dilihat hanya dengan melihat angka.
- Komunikasi yang Efektif: Grafik dan plot yang baik membantu kita mengkomunikasikan temuan dan insight kepada orang lain secara lebih efektif daripada teks atau angka.
- Pengambilan Keputusan yang Didukung Data: Dengan visualisasi yang jelas, pengambilan keputusan berbasis data menjadi lebih mudah dan efisien.
- Eksplorasi Data: Visualisasi membantu dalam eksplorasi data, memungkinkan kita untuk menemukan pola atau anomali yang mungkin tersembunyi.
Apa itu Matplotlib?
Matplotlib adalah salah satu pustaka (library) yang sangat populer dalam Python untuk membuat visualisasi data yang kuat dan fleksibel. Dalam artikel ini kita akan membahas tentang visualisasi data dengan Matplotlib, termasuk bagaimana menggunakan Matplotlib untuk membuat berbagai jenis grafik yang efektif.
Antarmuka Fungsional dan Object Oriented dalam Matplotlib
Dalam Matplotlib, terdapat dua antarmuka yang dapat digunakan untuk membuat visualisasi data: antarmuka fungsional (functional interface) dan antarmuka berorientasi objek (object-oriented interface). Perbedaan utama antara keduanya terletak pada cara penggunaan dan pendekatan dalam membuat grafik.
Antarmuka Fungsional : matplotlib.pyplot
Antarmuka fungsional adalah pendekatan yang lebih sederhana dan sering digunakan oleh pemula atau untuk membuat visualisasi data yang relatif sederhana. Dalam antarmuka fungsional, kita menggunakan fungsi-fungsi Matplotlib seperti plt.plot(), plt.bar(), plt.scatter(), dan sebagainya untuk membuat grafik.
- Secara konsep, terinspirasi oleh MATLAB, menggunakan kumpulan fungsi untuk membuat plot.
- Sesuai untuk pembuatan visualisasi yang sederhana dan cepat, cocok untuk eksplorasi interaktif.
- Berbasis state: Fungsi seperti plt.plot() atau plt.xlabel() memodifikasi satu Figure implisit yang sama. Urutan pemanggilan fungsi ini sangat penting dalam antarmuka fungsional.
- Kodenya lebih ringkas untuk plot dasar, namun menjadi kurang mudah dibaca dan di-maintain untuk visualisasi yang kompleks dan memiliki banyak elemen.
Ketika kita melakukan pemanggilan fungsi plt.namafungsi(), maka kita sedang menggunakan antarmuka fungsional
Kita akan menggunakan package matplotlib dan numpy untuk membuat visualisasi. Package matplotlib.pyplot biasa disingkat dengan alias plt, dan package numpy disingkat menjadi np
import matplotlib.pyplot as plt
import numpy as np
Contoh Membuat Plot dengan Antarmuka Fungsional
Dalam contoh ini, kita menggunakan fungsi plt.plot() untuk membuat grafik garis. Kemudian kita menambahkan label sumbu menggunakan fungsi plt.xlabel(), plt.ylabel(), serta judul dan subjudul dengan fungsi plt.suptitle() dan plt.title().
x = [0, 2, 4, 6, 8, 10 ,12, 16]
y = [1, 5, 9, 13, 17, 21, 25, 33]
#ukuran plot
plt.figure(figsize=(8,5))
#menampilkan line plot
plt.plot(x, y)
#mengubah label x dan y axis
plt.xlabel("sumbu x")
plt.ylabel("sumbu y")
#menampilkan grid
#plt.grid(True, )
#menampilkan judul dan subjudul
plt.suptitle("Judul Figure")
plt.title("Subjudul")
#menampilkan plot
plt.show()
Kelebihan antarmuka fungsional:
- Sederhana dan mudah dipahami. Untuk membuat grafik dasar, diperlukan relatif sedikit kode
- Sesuai untuk melakukan prototyping ataupun membuat plot sederhana
Kekurangan antarmuka fungsional :
- Kurang fleksibel untuk plot dan layout yang lebih advanced
Antarmuka Object Oriented
Selain antarmuka fungsional, kita dapat juga menggunakan objek-objek dalam matplotlib untuk menampilkan dan men-setting gambar.
- Memanfaatkan prinsip pemrograman berorientasi objek. Anda membuat objek eksplisit seperti Figure, Axes, dan Axis.
- Memberikan kontrol dan kustomisasi detail untuk grafik-grafik yang kompleks.
- Berbasis objek: Setiap elemen (Figure, Axes, Axis, dll.) adalah objek terpisah dengan properti dan metodenya sendiri.
- Untuk plot sederhana, kode dengan antarmuka object oriented tampak lebih bertele-tele daripada pyplot, tetapi untuk visualisasi yang rumit antarmuka object oriented memberikan pengorganisasian kode dan reusability yang lebih baik.
3 objek utama yang perlu diketahui adalah : Figure, Axes, dan Axis
- Figure merupakan top level container, atau canvas yang menjadi tempat bagi elemen lain
- Setiap Figure terdiri dari 1 atau lebih objek Axes (bedakan dengan Axis). Axes adalah area di mana titik-titik dapat digambarkan dalam koordinat x-y (untuk 2D)
- Axis adalah sumbu pada sebuah grafik
Referensi lengkap untuk objek-objek dalam matplotlib dapat dilihat di sini
Di bawah ini adalah bagian-bagian dari sebuah plot dalam matplotlib. Source untuk membuat gambar tersebut dapat dilihat di sini
Anatomi sebuah gambar dalam matplotlib
Pada umumnya, objek Figure dan Axes dibuat dengan memanggil fungsi plt.subplots(), dengan syntax : fig, ax = plt.subplots()
x = np.arange(0,9)
y = 2*x - 4
#membuat objek figure dan axes
fig, ax = plt.subplots()
#plot data menggunakan object Axes
ax.plot(x, y, label="2x-4")
#set label dan judul
ax.set(
xlabel="sumbu x",
ylabel="sumbu y",
title="Subjudul")
#show grid menggunakan object Axes
ax.grid(linewidth=.2)
#menampilkan legend
ax.legend()
#set figure title
fig.suptitle('This is the figure title')
fig.align_labels()
plt.show()
Kelebihan antarmuka object oriented:
- Lebih fleksibel dan mudah dikontrol
- Lebih mudah untuk membuat layout dan kustomisasi yang rumit
- Lebih mudah untuk mengubah plot yang sudah dibuat karena objek-objeknya terdefinisi secara eksplisit
Kekurangan antarmuka object oriented:
- Relatif lebih rumit daripada interface fungsional
- Memerlukan relatif lebih banyak koding, terutama untuk plot-plot sederhana
Memilih Antarmuka yang Tepat
Antarmuka mana yang lebih tepat untuk kita? Jawabannya sangat bergantung pada kebutuhan dan tujuan visualisasi, serta kompleksitas grafik yang akan dibuat.
Untuk kebutuhan belajar dan membuat visualisasi yang sederhana, pyplot merupakan pilihan yang lebih sesuai. Jika kita memerlukan lebih banyak kustomisasi, menggunakan banyak komponen, tata letak yang rumit, maka antarmuka berorientasi objek adalah pilihan yang tepat.