Visualisasi dengan Matplotlib : Pie Chart

Visualisasi Dengan Matplotlib - Pie Chart

Pie chart merupakan salah satu jenis visualisasi yang paling populer. Pada umumnya, grafis ini digunakan untuk menampilkan proporsi atau persentase data dalam bentuk irisan-irisan pada lingkaran. Dalam tutorial ini kita akan membahas cara membuat pie chart menggunakan Matplotlib, cara menambahkan label pada setiap irisan pie chart tersebut, dan beberapa kustomisasi lainnya.

Langkah pertama, kita import package yang diperlukan, di antaranya yaitu matplotlib.pyplot.

import matplotlib.pyplot as plt

Kita akan gunakan data berikut ini untuk visualisasi

produk = ['Produk 1', 'Produk 2', 'Produk 3', 'Produk 4' ]
penjualan = [332, 594, 258, 424]

 

Menampilkan Pie Chart

Untuk menampilkan pie chart, kita gunakan fungsi pyplot.pie(). Untuk menampilkan nama produk, gunakan parameter labels.

fig, ax = plt.subplots()
ax.pie(penjualan, labels=produk)

plt.show()

 

Menampilkan Persentase

Untuk menampilkan persentasi di dalam bagan, kita gunakan parameter autopct. Parameter ini secara default diset None, yang efeknya adalah nilai persentase tidak ditampilkan. Paramater autopct dapat menerima value berupa string atau fungsi.

Jika parameter berupa string format, string tersebut akan digunakan untuk memformat nilai persentase. Misalnya untuk menampilkan persentase 1 digit di belakang koma, kita gunakan string '%1.1f%%' .

fig, ax = plt.subplots()
ax.pie(penjualan, labels=produk, autopct='%1.1f%%')
plt.show()

 

Menggunakan Fungsi Untuk Menampilkan Persentase

Ketika parameter autopct diisi dengan fungsi, maka fungsi tersebut akan dieksekusi.

Misalnya kita ingin menampilkan nilai persentase dan nilai satuan masing-masing bagian. Kita bisa mendapatkan nilai satuan dengan cara mengalikan nilai persentase dengan nilai total penjualan, lalu menampilkan keduanya dengan menggunakan format yang diinginkan.

Untuk itu kita dapat menggunakan fungsi lambda. Yaitu : lambda p:f'{p:.2f}% ({p*sum(penjualan)/100 :.0f})'

fig, ax = plt.subplots()
ax.pie(penjualan, labels=produk, autopct=lambda p:f'{p:.2f}% ({p*sum(penjualan)/100 :.0f})')
plt.show()

 

Mengubah warna chart

Kita dapat mengubah pilihan warna pie chart dengan menggunakan parameter colors. Parameter ini menerima list yang berisi daftar warna. Jika panjang list kurang dari jumlah data yang ditampilkan, warna akan ditampilkan berulang (cycle).

List warna ini dapat berupa list of string nama, misalnya ['blue', 'red', 'cyan'], atau rgb tuple, misalnya [(0,0,1),(1,0,0),(0,1,1)], atau rgb hex string, misalnya ['#0000ff','#ff0000','#00ffff']. Untuk definisi color yang bisa digunakan, dapat dilihat di sini : https://matplotlib.org/stable/users/explain/colors/colors.html#colors-def.

fig, ax = plt.subplots()

ax.pie(penjualan, labels=produk, 
       autopct=lambda p:f'{p:.2f}% ({p*sum(penjualan)/100 :.0f})',
       colors= ['blue','red', 'cyan','green'])

plt.show()

 

Mengatur Letak Label dan Persentase

Kita dapat mengatur letak label dengan menggunakan parameter labeldistance. Nilainya menunjukkan jarak label dari pusat lingkaran. Secara default, labeldistance diberi nilai 1.1.

Jika kita ingin memindahkan label ke dalam lingkaran, maka kita bisa mengubah nilainya menjadi < 1, dalam hal ini kita gunakan nilai 0.5.

Letak persentase diatur dengan menggunakan parameter pctdistance. Secara default nilai pctdistance diset = 0.6.

Kita dapat menukar letak label dan persentase dengan mengubah setting kedua parameter tersebut.

fig, ax = plt.subplots()

ax.pie(penjualan, labels=produk, 
       autopct=lambda p:f'{p:.2f}% ({p*sum(penjualan)/100 :.0f})',
       labeldistance=.5, pctdistance=1.1)

plt.show()

 

Mengatur Letak dan Arah Putaran Pie Chart

Secara default urutan data pada piechart ditampilkan secara berlawanan arah dengan jarum jam (counterclockwise). Untuk mengubahnya menjadi searah jam, maka parameter counterclock kita set menjadi False.

Sedangkan dimulainya urutan tampilan data secara default adalah dari sumbu x positif. Untuk mengubahnya, kita dapat gunakan parameter startangle.

Jika kita ingin pie chart menampilkan 'Produk 1' di sebelah kiri (sumbu x negatif), dan memutar searah jarum jam, maka kita gunakan startangle=180 dan counterclock = False.

fig, ax = plt.subplots()

ax.pie(penjualan, labels=produk, 
       autopct=lambda p:f'{p:.2f}% ({p*sum(penjualan)/100 :.0f})',
       startangle=180, counterclock=False)

plt.show()

 

Membuat Pie Chart Lebih Menarik : Explode dan Shadow

Matplotlib juga menyediakan beberapa parameter lain yang bisa digunakan untuk menambahkan efek visualisasi yang lebih menarik dan informatif. Dua parameter yang sering digunakan adalah explode dan shadow.

Parameter explode digunakan untuk memisahkan atau menjauhkan satu atau lebih irisan pie chart dari lingkaran utama. Fitur ini sering digunakan untuk memberikan penekanan pada irisan tertentu dalam pie chart.

Parameter explode menerima sebuah list atau tuple yang panjangnya sama dengan jumlah irisan pada pie chart. Setiap elemen dalam list atau tuple ini menunjukkan seberapa jauh irisan tersebut dipisahkan dari pusat pie chart. Nilainya berupa angka desimal antara 0 dan 1. Nilai 0 berarti irisan tidak dipisahkan, sedangkan nilai mendekati 1 berarti irisan dipisahkan lebih jauh dari pusat.

fig, ax = plt.subplots()

exploded = (0.1, 0, 0, 0)

ax.pie(penjualan, labels=produk, 
       autopct='%1.1f%%',
       startangle=180, counterclock=False,
       colors='rgby',
       explode=exploded
       )

plt.show()

 

Parameter shadow digunakan untuk menambahkan bayangan pada pie chart. Bayangan ini memberikan efek 3D yang dapat membuat pie chart terlihat lebih menarik.

Parameter shadow menerima nilai boolean. Secara default, nilai shadow = False (tanpa bayangan).

fig, ax = plt.subplots()

exploded = (0.1, 0, 0, 0)

ax.pie(penjualan, labels=produk, 
       autopct='%1.1f%%',
       startangle=180, counterclock=False,
       colors='rgby',
       explode=exploded,
       shadow=True
       )

plt.show()

 

Wrapping Up

Dalam tutorial ini dibahas dasar-dasar membuat pie chart menggunakan Matplotlib.

Ikuti juga tutorial-tutorial lainnya :