Matplotlib merupakan pustaka Python paling populer untuk membuat berbagai macam visualisasi. Library ini menyediakan berbagai fungsi dan object yang memungkinkan kita untuk melakukan kustomisasi terhadap grafik yang kita buat. Banyak library yang dibangun di atas matplotlib, seperti Seaborn, Bokeh, Pandas, dll.
Salah satu jenis chart atau grafik yang paling banyak digunakan adalah bar chart, karena relatif sederhana dan mudah difahami.
Bar chart atau diagram batang pada umumnya digunakan untuk :
- Membandingkan nilai antar kategori. Misalnya untuk membandingkan nilai penjualan dari beberapa jenis produk, atau membandingkan tingkat kelahiran per propinsi, dll.
- Menunjukkan ranking : jika diagram batang ditampilkan berurutan dari nilai yang terkecil atau terbesar, kita dapat melihat urutan atau rankingnya.
- Sebaran nilai untuk variabel kategorikal : jika nilai yang ditampilkan adalah frekuensi (count), maka bar chart dapat menunjukkan sebaran atau komposisi nilai untuk sebuah variabel kategorikal.
Dalam tutorial ini, kita akan mempelajari cara membuat diagram batang menggunakan matplotlib.
Sedangkan tutorial membuat bar chart menggunakan Pandas dapat dibaca pada artikel : Visualisasi Dengan Pandas - Bar Chart.
Package yang akan kita gunakan adalah matplotlib.pyplot
import matplotlib.pyplot as plt
Membandingkan nilai antar kategori
produk = ['Produk 1', 'Produk 2', 'Produk 3']
penjualan = [332, 594, 108]
plt.bar(produk, penjualan) # Create the bar plot
plt.xlabel('Nama Produk')
plt.ylabel('Total Penjualan (ribu pcs)')
plt.title('Penjualan per Produk')
plt.show()
Menunjukkan ranking
produk = ['Produk 1', 'Produk 2', 'Produk 3']
penjualan = [332, 594, 108]
plt.bar(produk, penjualan) # Create the bar plot
plt.xlabel('Nama Produk')
plt.ylabel('Total Penjualan (ribu pcs)')
plt.title('Penjualan per Produk')
plt.show()
Menambahkan Label Nilai Pada Bar Chart
Untuk menambahkan label pada barchart, kita dapat menggunakan fungsi bar_label() pada objek axes, dengan parameter barchart_container.
#Data
produk = ['Produk 1', 'Produk 2', 'Produk 3']
penjualan = [332, 594, 108]
Untuk mendapatkan object axes, kita panggil fungsi plt.subplots(), sedangkan objek barchart_container bisa kita dapatkan dari return value fungsi bar().
Selanjutnya barchart_container tersebut kita gunakan sebagai parameter pada fungsi ax.bar_label()
fig, ax = plt.subplots() #simpan object Axes
bc = ax.bar(produk, penjualan) # Buat bar chart, simpan object barchart_container
ax.bar_label(bc) #gunakan variabel tsb sebagai parameter fungsi bar_label
Berbeda dengan contoh sebelumnya, pada contoh ini kita akan lakukan setting label sumbu x, sumbu y, dan judul melalui fungsi set pada object Axes.
Selain itu kita juga akan set batas atas y ke 650 untuk memberi space di atas label, dengan parameter ylim.
ax.set(xlabel='Nama Produk',
ylabel='Total Penjualan (ribu pcs)',
title='Penjualan per Produk',
ylim=(0,650))
plt.show()
Mengubah Letak dan Format Label
Kita dapat menyesuaikan letak label dengan menggunakan parameter label_type. Sedangkan format font dapat diatur dengan parameter color, fontweight, ataupun parameter lain seperti parameter fmt.
produk = ['Produk 1', 'Produk 2', 'Produk 3']
penjualan = [332, 594, 108]
fig, ax = plt.subplots()
bc = ax.bar(produk, penjualan)
#gunakan parameter untuk kustomisasi
ax.bar_label(bc, label_type='center', color='w', fontweight='bold')
ax.set(xlabel='Nama Produk',
ylabel='Total Penjualan (ribu pcs)',
title='Penjualan per Produk',
ylim=(0,650))
plt.show()
Horizontal Bar Chart dengan Label
Untuk membuat horizontal barchart, kita gunakan fungsi barh(). Kita gunakan parameter padding dalam fungsi bar_label untuk memberi jarak antara tepi batang dan label.
produk = ['Produk 3', 'Produk 1', 'Produk 2']
penjualan = [108, 332, 594]
fig, ax = plt.subplots()
bc = ax.barh(produk, penjualan)
ax.bar_label(bc, color='b', fontweight='bold', padding=3)
ax.set(ylabel='Nama Produk',
xlabel='Total Penjualan (ribu pcs)',
title='Penjualan per Produk',
xlim=(0,650))
plt.show()
Mengubah Warna Salah Satu Elemen Bar Chart
Kadang kala kita perlu memberikan penekanan (highlight) kepada suatu nilai tertentu, misalnya nilai minimum atau maksimum.
Kita dapat menggunakan warna yang berbeda untuk memberikan penekanan tersebut.
Kita dapat mengubah salah satu batang pada diagram, dengan menggunakan fungsi set_color().
- Untuk mengubah warna batang, kita gunakan bar_container yang dikembalikan oleh fungsi plt.plot().
- Untuk mengubah warna label, kita gunakan object text yang dikembalikan oleh fungsi bar_label().
produk = ['Produk 1', 'Produk 2', 'Produk 3', 'Produk 4' ]
penjualan = [332, 594, 108, 424]
fig, ax = plt.subplots()
bcont = ax.barh(produk, penjualan)
btext = ax.bar_label(bc, fontsize=8, padding=3)
bcont[2].set_color('r') #set warna batang ke 3 = red
btext[2].set_color('b') #set warna label ke 3 = blue
ax.set(ylabel='Nama Produk',
xlabel='Total Penjualan (ribu pcs)',
title='Penjualan per Produk',
xlim=(0,650))
plt.show()
Wrapping Up
Bar chart alias diagram batang merupakan salah satu jenis diagram yang paling banyak digunakan karena kesederhanaan dan kemudahannya. Matplotlib menyediakan fungsi dan object yang dapat kita kustomisasi sesuai dengan kebutuhan kita.
Simak juga tutorial-tutorial sebelumnya tentang visualisasi data
- Visualisasi Dengan Matplotlib - Membuat Grafik Sederhana
- Visualisasi Dengan Matplotlib - Antarmuka Fungsional dan Object Oriented
- Visualisasi Dengan Pandas - Bar Chart
- Visualisasi Dengan Pandas - Line Chart