0% menganggap dokumen ini bermanfaat (0 suara)
28 tayangan

Modul 3

Modul ini membahas cara membuat dan mengkustomisasi grafik menggunakan library matplotlib di Python. Terdapat penjelasan tentang pengolahan dan visualisasi data, serta modifikasi komponen grafik seperti judul, label sumbu, garis, titik, grid.

Diunggah oleh

xapidir595
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
28 tayangan

Modul 3

Modul ini membahas cara membuat dan mengkustomisasi grafik menggunakan library matplotlib di Python. Terdapat penjelasan tentang pengolahan dan visualisasi data, serta modifikasi komponen grafik seperti judul, label sumbu, garis, titik, grid.

Diunggah oleh

xapidir595
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

Modul 3.

Membuat Grafik dengan Library


Matplotlib

Pengenalan Dataset
Datanya ada di file 'https://storage.googleapis.com/dqlab-
dataset/retail_raw_reduced.csv'

Data tercetak di console:

Di sini terlihat bahwa kita punya 5000 barisdata, dan terdiri dari 9 kolom.
Penjelasannya sbb:

 order_id : ID dari order/transaksi, 1 transaksi bisa terdiri dari beberapa produk, tetapi
hanya dilakukan oleh 1 customer
 order_date : tanggal terjadinya transaksi
 customer_id : ID dari pembeli, bisa jadi dalam satu hari, 1 customer melakukan transaksi
beberapa kali
 city : kota tempat toko terjadinya transaksi
 province : provinsi (berdasarkan city)
 product_id : ID dari suatu product yang dibeli
 brand : brand/merk dari product. Suatu product yang sama pasti memiliki brand yang sama
 quantity : Kuantitas / banyaknya product yang dibeli
 item_price : Harga dari 1 product (dalam Rupiah). Suatu product yang sama, bisa jadi
memiliki harga yang berbeda saat dibeli
Penambahan Kolom Order Month pada Dataset
Kita bisa memanfaatkan library pandas dan numpy untuk mengolah data.
“Untuk membuat grafik GMV bulanan, bayangan kita tentu adalah sebuah line chart
dengan sumbu-x berupa bulan, dan sumbu-y adalah total GMV di bulan tersebut.
Kita belum punya kolom bulan, baru ada order_date yang merupakan tanggal transaksi.
Tapi, tidak masalah. Kita bisa membuat kolom baru order_month dengan kode seperti ini:

Ada beberapa function yang berperan di sini:

 apply & lambda biasa digunakan untuk membuat kolom baru, berdasarkan suatu
kolom lain yang sudah ada (misal .apply(lambda x: x*2) berarti setiap input x di
dalam kolom, akan diubah menjadi x*2). Dalam hal ini kolom yang sudah ada
adalah dataset['order_date'], lalu tiap nilai di dalamnya kita proses agar menjadi
month-nya saja
 Function datetime.datetime.strptime digunakan untuk mengubah date/time dalam
bentuk string menjadi tipe data datetime.
 Function strftime digunakan untuk mengubah format suatu data bertime datetime,
dalam hal ini diubah menjadi '%Y-%m', yang berarti outputnya adalah waktu
dengan bentuk YYYY-MM atau tahun dan bulan saja, tanggalnya sudah tidak ada.

Jika berhasil dijalankan maka akan diperoleh tampilan 5 data teretas sebagai berikut :
Penambahan Kolom GMV pada Dataset
Selanjutnya, bagaimana dengan GMV? Definisikan GMV adalah perkalian setiap entri di
kolom item_price dan kolom quantity. Bisa saja menggunakan fungsi apply & lambda
seperti tadi, tetapi ada cara yang lebih mudah yaitu dengan mengalikan kedua kolom yang
disebutkan secara langsung.
Code:

Jalankan kode di atas melalui tombol maka akan diperoleh hasil berikut di console

Ukuran dataset:5000 baris dan 11 kolom

Lima data teratas:


order_id order_date customer_id ... item_price order_month gmv
0 1703458 2019-10-17 14004 ... 740000 2019-10 7400000
1 1706815 2019-10-24 17220 ... 604000 2019-10 1208000
2 1710718 2019-11-03 16518 ... 1045000 2019-11 8360000
3 1683592 2019-08-19 16364 ... 205000 2019-08 820000
4 1702573 2019-10-16 15696 ... 4475000 2019-10 8950000

[5 rows x 11 columns]

Sekarang isi dataframe menjadi seperti ini, sudah ada kolom order_month dan gmv.

Membuat Data Agregat


kode grafiknya menggunakan matplotlib:

Dengan menekan tombol diperoleh output di consol sebagai berikut:

order_month gmv
0 2019-07 3524041000
1 2019-08 4452923000
2 2019-09 3947002000
3 2019-10 6719937000
4 2019-11 6182229000
5 2019-12 8148235000

Plot Pertama: Membuat Line Chart Trend


Pertumbuhan GMV
Selanjutnya mari menggunakan matplotlib. Untuk menggunakan matplotlib, bisa
memanggil library-nya seperti ini:

Cara standar untuk menggunakan matplotlib yaitu dengan memanggil function plt.plot lalu
definisikan nilai di sumbu-x dan sumbu-y. Dalam hal ini, definisikan kolom order_month di
sumbu-x (parameter pertama), dan kolom gmv di sumbu-y (parameter kedua). Setelah
selesai mendefinisikan komponen chart-nya, lalu panggil plt.show()untuk menampilkan
grafiknya.

Jika berhasil dijalankan dengan menekan tombol Run, diperoleh tampilan line chart-nya
seperti berikut ini :

Graphic 1

Cara Alternatif: Fungsi .plot() pada pandas


Dataframe
Dengan pendekatan lain, dimungkinkan juga melakukan visualisasi dengan matplotlib
tanpa membuat variabel baru.

Misalnya dengan code seperti ini:

Jika dijalankan dengan menekan akan diperoleh grafik berupa

Kesimpulan :
cara untuk membuat plot menggunakan matplotlib:

1. Kita dapat menggunakan fungsi plt.plot() dari library matplotlib.pyplot as plt


2. atau dengan menggunakan fungsi .plot() langsung dari variabel dataframe, yaitu
dataset pada kasus kita sebelumnya.
Anatomi dari Figure
“Sebelum mulai kustomisasi, ada baiknya kita pahami dulu anatomi dari sebuah Figure di
maplotlib. Bisa dilihat sesuai di gambar berikut :

Ada beberapa istilah dan komponen di sebuah plot, nanti akan mempermudah mengingat
function apa yang digunakan untuk memodifikasinya.

 Figure adalah keseluruhan visualisasi yang kita plot dalam 1 kali menjalankan
code.
 Sedangkan satu plot (yang dibuat saat memanggil .plot() atau .scatter())
disebut Axes. Sebuah Figure bisa terdiri dari beberapa Axes.
 Setiap Axes biasanya memiliki sumbu-X (X-axis) dan sumbu-Y (Y-axis). Masing-
masing sumbu memiliki komponen sebagai berikut:
o Axis Label: Nama dari sumbu yang ditampilkan.
o Tick: Penanda berupa titik/garis kecil yang berjajar di sumbu, sebagai
referensi skala nilai.
o Tick Label: Tulisan di tiap tick yang menyatakan nilainya.
 Untuk isi grafiknya sendiri, bisa berupa line (untuk line plot), atau marker (untuk
scatter plot), bisa juga bentuk lain seperti bar (untuk bar plot / histogram).
 Aksesoris lain yang bisa ditambahkan, di antaranya Grid untuk mempermudah
melihat tick yang sejajar, dan Text untuk memberikan informasi tambahan
berbentuk teks di grafik.
Memahami komponen-komponen di atas sudah cukup untuk melakukan berbagai
visualisasi dengan matplotlib. Untuk anatomi yang lebih lengkap, bisa dilihat di link
berikut: https://matplotlib.org/3.1.3/gallery/showcase/anatomy.html.

Mengubah Figure Size


Jika ukuran grafiknya yang diubah belakangan, biasanya banyak komponen lain yang
berubah bentuknya
Caranya, sebelum mulai membuat plot, kita tambahkan kode berikut sebelum melakukan
plotting grafik.”

Jika keseluruhan kode pada code editor dengan benar ditulis dan diekskusi dengan maka
diperoleh hasil berupa:

Dalam contoh ini, ukuran Figure telah diubah agar memiliki panjang 15 inch, dan lebar 5
inch. Sehingga line chart-nya bisa memanjang ke kanan dan lebih mudah dilihat trend-
nya.

Menambahkan Title and Axis Labels


Beberapa hal yang lazim dimodifikasi pada sebuah grafik adalah judul (title) dan label di
sumbu-x & sumbu-y (axis labels).

Untuk menambahkannya, tinggal menambah plt.title, plt.xlabel, dan plt.ylabel di code


sebelum plt.show(), misalnya seperti ini:
Jika dengan benar dituliskan dan dieksekusi melalui diperoleh output grafik seperti
berikut:

Sekarang terlihat bahwa chart ini sudah memiliki judul, dan label teks di kedua sumbunya.

Kustomisasi Title and Axis Labels


“Kita bisa melakukan berbagai modifikasi dengan menambahkan parameter ke dalam
function-nya. Misalnya, untuk judul/title, parameter yang bisa ditambahkan:

 loc: digunakan untuk menentukan posisi title, misalnya ‘left’ untuk membuat rata
kiri, ‘right’ untuk rata kanan, dan ‘center’ untuk meletakkannya di tengah. Jika tidak
didefinisikan, maka defaultnya title ada di tengah.
 pad: digunakan untuk menambahkan jarak antara judul ke grafik (dalam satuan px),
misalnya kita tidak ingin judulnya terlalu menempel dengan grafiknya, jadi kita beri
jarak.
 fontsize: digunakan untuk mengganti ukuran font/huruf (dalam satuan px).
 color: digunakan untuk mengganti warna huruf judul. Kita bisa menggunakan
warna dasar dengan kata seperti ‘blue’, ‘red’, ‘orange’, dsb. Bisa juga dengan hex
string, misalnya '#42DDF5' untuk warna biru muda.

Untuk xlabel dan ylabel, kita bisa mengganti fontsize dan color, tetapi tidak bisa mengganti
loc.

Mari modifikasi judul, xlabel, dan ylabel dengan parameter-parameter di atas, misalnya
seperti ini:
Jika dieksekusi kode yang telah selesai dituliskan pada code editor dengan , maka
diperoleh output grafik berupa

Bisa dilihat bahwa judulnya sekarang menjadi lebih besar, agak berjarak ke atas, dan
berwarna biru. Label di sumbu x maupun y juga menjadi lebih besar dari sebelumnya.

Kustomisasi Line dan Point


Untuk mengubah style dari garis maupun titik di chart, cukup dengan menambahkan
parameter di function .plot(). Beberapa parameter yang bisa dikustomisasi:

 color: mengubah warnanya (sama seperti di title)


 linewidth: mengubah ketebalan line/garisnya (dalam satuan px)
 linestyle: mengubah jenis dari garis. Misalnya '-' atau 'solid' untuk garis tak terputus
(seperti pada default), '--' atau 'dashed' untuk garis putus-putus, ':' atau 'dotted'
untuk garis berupa titik-titik, bisa juga '-.' atau ‘dashdot’ untuk garis dan titik
bergantian.
 marker: mengubah tipe points/titik data di chart. Ada banyak sekali kemungkinan
nilai untuk marker ini, yang biasanya digunakan yaitu ‘.’ untuk bulatan kecil/titik, ‘o’
untuk bulatan agak besar, ‘s’ untuk persegi, ‘D’ untuk diamond/wajik, dan bentuk-
bentuk lain seperti ‘+’, ‘x’, ‘|’, ‘*’.

Misalnya ingin ubah grafiknya menjadi seperti ini:


Jika telah selesai dikustomisasi line dan pointnya, jalankan dengan dan diperoleh output
grafik berupa:

Kustomisasi Grid
kustomisasi grid juga berguna agar nilai di masing-masing titik bisa mudah dipetakan ke
sumbu-y. Caranya dengan menambahkan grid
Caranya dengan menambahkan plt.grid() dengan parameter yang mirip dengan line.
Contohnya di sini:

Jika telah selesai dikustomisasi gridnya dan kemudian dijalankan dengan , maka tampilan
grafik yang diperoleh adalah
Kustomisasi Axis Ticks
Nilai-nilai di sumbu x dan y bisa diakses melalui function plt.xticks() dan plt.yticks().
Untuk mengubah ticks di sumbu-y menjadi milyar, bisa menambahkan code sebagai
berikut:

Jika telah diselesaikan penulisan kodenya dan dijalankan dengan , diperoleh tampilan
grafik berikut ini

Dapat dilihat bahwa plt.ticks() yang sebelumnya, digantikan dengan nilai baru yaitu nilai
awal dibagi dengan 1 mily\ar (1000000000).

Menentukan Batas Minimum dan Maksimum


Axis Ticks
Di sini dapat dilihat bahwa nilai terkecil di sumbu-y adalah 150. Ini kadang bisa membuat
orang tertipu sih, seakan-akan GMV di bulan Oktober naik menjadi hampir 3 kali lipat dari
September. Untuk itu sebaiknya diset agar sumbu-y nya dimulai dari 0, cukup tambahkan
plt.ylim(ymin=0) seperti ini:

Jika dijalankan kode yang telah ditulis pada code editor dengan , berikut
ditampilkan kustomisasi batas sumbu y -nya:
Untuk mengatur batas maksium, kita tambahkan juga parameter ymax, tetapi sepertinya di
sini tidak perlu. Kita juga bisa mengatur batas minimum dan maksimum sumbu-x dengan
function plt.xlim.

Menambahkan Informasi Pada Plot


“Dilihat dari trend-nya, mulai bulan Oktober 2019, GMV kita naik drastis setelah
sebelumnya stagnan di angka 200-300 milyar per bulan. Kita bisa mulai dengan
menambahkan info ini di grafik. Caranya dengan menambahkan plt.text seperti potongan
kode program berikut ini:

Jika keseluruhan kode dijalankan diperoleh tampilan grafik seperti berikut ini
Perhatikan bahwa ada beberapa parameter yang diset saat menggunakan plt.text. Dua
angka pertama itu adalah koordinat, x dan y. Saat set transform=fig.transFigure, maka
koordinatnya berkisar 0 sampai 1 (untuk x dari kanan ke kiri, dan untuk y, dari bawah ke
atas).
Jika parameter transform tidak diisi, maka koordinatnya dalam satuan inch (Dalam contoh
ini, dari 0-15 dari kiri ke kanan, dan 0-5 dari bawah ke atas). Seperti halnya title atau label,
dimungkinkan juga untuk set warna dan ukuran hurufnya.

Menyimpan Hasil Plot Menjadi File Image


Kita bisa menyimpan sebagai file gambar dengan function savefig sebelum plt.show(),
seperti ini:

atau secara lengkapnya untuk kasus bahasan kita

Kita bisa menyimpannya ke berbagai tipe file, seringnya sih jpg, png, atau kadang pdf juga
bisa. Untuk mengetahui format lengkapnya, kita bisa menggunakan code berikut:

plt.gcf().canvas.get_supported_filetypes()
dengan outputnya menunjukkan ke dalam tipe file apa saja dapat disimpan

Pengaturan Parameter untuk Menyimpan


Gambar
Ada berbagai parameter yang bisa diatur saat menyimpan gambar, antara lain:

 dpi: Resolusi gambar (dots per inch).


 quality: Kualitas gambar (hanya berlaku jika formatnya jpg atau jpeg), bisa diisi
nilai 1 (paling buruk) hingga 95 (paling bagus).
 facecolor: Memberikan warna bagian depan figure, di luar area plot
 edgecolor: Memberikan warna pinggiran gambar
 transparent: Jika nilainya True, maka gambarnya jadi transparan (jika filenya png)

Tapi biasanya, parameter-parameter ini tidak digunakan karena grafik di file gambar bisa
jadi berbeda dengan yang muncul saat menjalankan code di python.
Jadi, coba disimpan dengan settingan seperti ini ya:

atau secara lengkapnya untuk kasus bahasan ini :


Yang akan menghasilkan kualitas gambar yang tersimpan sebesar 95% dari awal.

Tugas Modul 3. Lengkapi program berikut


Studi Kasus: Daily number of customers on
Desember
Dengan menggunakan dataset yang sama ('https://storage.googleapis.com/dqlab-
dataset/retail_raw_reduced.csv'), buatlah sebuah line chart dengan Matplotlib, yang
menunjukkan jumlah pembeli harian (daily number of customers) selama bulan
Desember.
Beberapa spesifikasi yang harus diperhatikan:

 Ukuran figure adalah 10x5


 Sumbu-x adalah tanggal pembelian, dari tanggal 1 - 31 Desember 2019
 Sumbu-y adalah jumlah unique customers di tiap tanggal
 Title dan axis label harus ada, tulisan dan style-nya silakan disesuaikan sendiri

# Import library yang dibutuhkan


import datetime
import ___ as pd
import ___.___ as plt
# Baca dataset https://storage.googleapis.com/dqlab-dataset/retail_raw_reduced.csv
dataset = ___('___')
# Buat kolom order_month
dataset['order_month'] = ___['order_date'].___(lambda x: datetime.datetime.strptime(x,
"%Y-%m-%d").strftime('%Y-%m'))
# Buat kolom gmv
dataset['gmv'] = ___['item_price'] * ___['quantity']
# Plot grafik sesuai dengan instruksi
plt.___(___=(___, ___))
dataset[dataset['order_month']=='2019-12'].___(['order_date'])['customer_id'].
nunique().plot(color='___', marker='.', linewidth=2)
plt.title('___', ___='___', ___=___, ___=___, ___='___')
plt.xlabel('___', fontsize=15, ___='___')
plt.ylabel('___', fontsize=15, ___='___')
plt.grid(___='darkgray', ___=':', ___=0.5)
plt.ylim(ymin=___)
plt.___

Jika berhasil kodenya dibuat dan dijalankan dengan diperoleh grafik seperti berikut ini
Catatan :

Jika terdapat error :

Figures now render in the Plots pane by default. To make them also appear inline in the Console,
uncheck "Mute Inline Plotting" under the Plots pane options menu.

Solusi :

Klik View, hilangkan centang di Lock panes and toolbars, kemudian pastikan di View Panes

Plots sudah tercentang

Contoh tampilan grafik di Spyder :

Anda mungkin juga menyukai