Matplotlib adalah salah satu pustaka (library) Python yang sangat populer 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 dasar yang sederhana.
Matplotlib menyediakan 2 antarmuka, yaitu fungsional ataupun object oriented. Kita dapat menggunakan salah satu atau kombinasi dari keduanya. Perbedaan dan perbandingan antar kedua antarmuka ini telah dibahas pada artikel sebelumnya. Dalam tutorial ini kita akan menggunakan antarmuka fungsional.
Kita akan gunakan package matplotlib.pyplot dan numpy.
import matplotlib.pyplot as plt
import numpy as np
Bar Chart
Bar chart atau grafik batang adalah grafik yang paling umum digunakan untuk menunjukkan perbandingan antara kategori. Untuk menampilkan barchart, gunakan fungsi plt.bar().
negara = ['USA', 'China', 'Ethiopia']
populasi = [332, 1394, 108] # In millions
plt.bar(negara, populasi) # Create the bar plot
plt.xlabel('Negara')
plt.ylabel('Populasi (Juta jiwa)')
plt.title('Jumlah Penduduk')
plt.show()
Horizontal Bar Chart
Untuk menampilkan barchart secara horizontal, gunakan fungsi plt.barh(). Jangan lupa untuk menyesuaikan sumbu X dan Y-nya
negara = ['USA', 'China', 'Ethiopia']
populasi = [332, 1394, 108] # In millions
plt.barh(negara, populasi) # Create the bar plot
plt.xlabel('Negara')
plt.ylabel('Populasi (Juta jiwa)')
plt.title('Jumlah Penduduk')
plt.show()
Line Chart
Line chart atau diagram garis digunakan untuk menampilkan nilai numerik dalam interval atau periode waktu yang berkesinambungan.
Pada umumnya line chart digunakan untuk menunjukkan trend dalam data.
Untuk menampilkan diagram garis, kita gunakan fungsi plt.plot().
# Data
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
# Create a line plot
plt.plot(x, y)
# Add labels and title
plt.xlabel('Sumbu X')
plt.ylabel('Sumbu Y')
plt.title('Contoh Diagram Garis')
# Show the plot
plt.show()
Multiple Line Chart
Jika kita ingin membandingkan trend dari beberapa kategori berbeda, kita bisa gunakan multiple line chart. Kita plot masing-masing kategori, dan memberikan warna yang berbeda dengan menggunakan parameter color.
# Data
x = [1, 2, 3, 4, 5]
y1 = [10, 20, 15, 25, 30]
y2 = [20, 10, 5, 15, 20]
y3 = [5, 25, 15, 5, 35]
# Create a line plot
plt.plot(x, y1, color = 'blue')
plt.plot(x, y2, color = 'red')
plt.plot(x, y3, color = 'green')
# Add labels and title
plt.xlabel('Sumbu X')
plt.ylabel('Sumbu Y')
plt.title('Beberapa Kategori')
# Show the plot
plt.show()
Untuk menambahkan legend pada grafik, lakukan langkah ini :
- berikan label untuk masing-masing garis, menggunakan parameter label pada fungsi plt.plot()
- panggil fungsi plt.legend() untuk memunculkan legend
# Data
x = [1, 2, 3, 4, 5]
y1 = [10, 20, 15, 25, 30]
y2 = [20, 10, 5, 15, 20]
y3 = [5, 25, 15, 5, 35]
# Create a line plot
plt.plot(x, y1, color = 'blue', label='Garis 1')
plt.plot(x, y2, color = 'red', label='Garis 2')
plt.plot(x, y3, color = 'green', label='Garis 3')
# Add labels and title
plt.xlabel('Sumbu X')
plt.ylabel('Sumbu Y')
plt.title('Beberapa Kategori dengan Legend')
plt.legend()
# Show the plot
plt.show()
Pie Chart
Digunakan untuk menunjukkan proporsi dan persentase antar kategori, dengan membagi lingkaran menjadi segmen yang proporsional.
Untuk menampilkan pie chart, gunakan fungsi plt.pie().
tingkat = ['SD', 'SMP', 'SMA', 'SMK']
proporsi = [5.31, 27.1, 39.38, 41.45]
# Create the pie chart
plt.pie(proporsi, labels=tingkat, autopct='%1.1f%%')
plt.title('Sekolah dengan Akses Komputer (2022)')
plt.show()
Histogram
Histogram digunakan untuk menampilkan sebaran data numerik dalam bentuk batang. Fungsi yang digunakan adalah plt.hist() yang menerima sebuah array numerik. Tinggi tiap batang menunjukkan frekuensi atau jumlah kemunculan nilai tertentu dalam data.
Dengan melihat bentuk histogram yang dihasilkan, kita dapat mengetahui jenis distribusi data.
Kita akan gunakan fungsi np.random.randn() untuk menghasilkan sekumpulan data random dengan distribusi normal.
data = np.random.randn(1000) # Generate data random dengan sebaran normal
# Create the histogram
plt.hist(data)
plt.xlabel('Nilai')
plt.ylabel('Frekuensi')
plt.title('Sebaran Normal')
plt.show()
Data dengan distribusi eksponensial menghasilkan bentuk histogram yang berbeda. Kita gunakan fungsi np.random.exponential() untuk menghasilkan data random berdistribusi eksponensial.
data = np.random.exponential(size=1000) # Generate data random dengan sebaran eksponensial
# Create the histogram
plt.hist(data)
plt.xlabel('Nilai')
plt.ylabel('Frekuensi')
plt.title('Sebaran Eksponensial')
plt.show()
BoxPlot
Selain dengan histogram, kita dapat menampilkan ditribusi data dengan menggunakan boxplot (atau disebut juga "box and whisker plot").
Fungsi untuk menampilkan boxplot adalah plt.boxplot()
Selain sebaran data, boxplot juga menampilkan informasi berupa nilai minimum, kuartil 1, 2, dan 3, serta nilai maksimum. Boxplot juga menunjukkan adanya pencilan dalam data.
data = np.random.randn(1000) # Generate data random
# Create the boxplot
plt.boxplot(data)
plt.xlabel('Nilai')
plt.ylabel('Frekuensi')
plt.title('Sebaran Normal')
plt.show()
Boxplot untuk data dengan distribusi eksponensial.
data = np.random.exponential(size=1000) # Generate data random dengan sebaran eksponensial
# Create the boxplot
plt.boxplot(data)
plt.xlabel('Nilai')
plt.ylabel('Frekuensi')
plt.title('Sebaran Eksponensial')
plt.show()
Simak juga artikel-artikel sebelumnya :
- Visualisasi Dengan Matplotlib - Antarmuka Fungsional dan Object Oriented
- Visualisasi Dengan Pandas - Line Chart