Lompat ke konten Lompat ke sidebar Lompat ke footer

Membuat Scatter Plot Menggunakan Data dengan Kategori yang Berbeda

Daftar Isi
1. Menyiapkan Data per Kategori
2. Membuat Figure dan Axis Matplotlib
3. Mengatur Elemen Grafik
4. Script Lengkap

 Scatter plot adalah salah satu jenis grafik yang dapat digunakan untuk melihat korelasi antara 2 variabel. Misalnya, berapa banyak uang tip yang diberikan jika total belanja semakin banyak?

Selain itu, bagaimana jika ingin melihat, korelasi di atas pada 2 kategori yang berbeda. Misalnya, apakah laki-laki lebih banyak memberikan uang tip dibanding perempuan jika belanjanya lebih banyak?. Pertanyaan tersebut dapat dilihat pada grafik berikut ini. 

scatter_plot_full


Grafik di atas memuat scatter plot untuk data kategori laki-laki dan perempuan. Data tip laki-laki ditandai dengan titik warna merah, dan perempuan dengan warna biru. Secara umum, trend pemberian uang tip cukup mirip antara laki-laki dan perempuan.

Tapi kalau diperhatikan lebih detail di sebelah kanan, bahwa laki-laki cenderung memberikan uang tip yang lebih banyak dibanding perempuan, Bahkan ada laki-laki yang memberikan tip 10 dollar ketika berbelanja total 50 dollar. menarik kan?

Scatter Plot di atas dapat dibuat menggunakan Matplotlib, berikut ini langkah-langkahnya.

Menyiapkan Data per Kategori

Seperti yang diketahui, Scatter Plot membutuhkan 2 array untuk diplot pada sumbu x dan sumbu y. Karena sekarang akan dibuat scatter plot untuk 2 kategori, jadi dibutuhkan 4 buah array. Misalnya, x_laki, y_laki, x_perempuan, y_perempuan.

Array tersebut akan diekstrak dari data tips. Kira-kira seperti ini caranya:

1   import seaborn as sns
2   import matplotlib.pyplot as plt
3   
4   data = sns.load_dataset("tips")
5   
6   female = data[data["sex"] == "Female"]
7   x_fem = female["total_bill"].values
8   y_fem = female["tip"].values
9   
10  male = data[data["sex"] == "Male"]
11  x_mal = male["total_bill"].values
12  y_mal = male["tip"].values

Oke mari kita bahas. Pertama, import modul yang dibutuhkan, matplotlib dan seaborn. Matplotlib digunakan untuk membuat scatter plot, dan seaborn digunakan untuk memuat dataset yang akan diplot.

Data diload pada baris ke 4. Pada tutorial ini digunakan dataset "tips", yang berisi data-data tentang jumlah tip yang diberikan saat belanja. Data yang diload bertipe pandas dataframe.

Seperti yang sudah dijelaskan, akan diplot data "total_bill" dan "tip" pada data laki-laki dan perempuan. Data "total_bill" diplot pada sumbu x, dan disimpan pada variabel x. Data "tip" diplot pada sumbu y dan disimpan pada variabel y.

Baris 6 hingga 8 menunjukkan proses ekstraksi data perempuan, atau dalam data ditulis sebagai "Female". Untuk membedakan laki-laki dan perempuan, variabel perempuan diberi nama x_fem dan y_fem.

Baris 10 hingga 12 menunjukkan ekstraksi data kategori laki-laki atau "male". Sama seperti sebelumnya, data tersebut disimpan pada variabel x_mal dan y_mal


Membuat Figure dan Axis Matplotlib

Seperti yang sudah dibahas pada artikel elemen grafik matplotlib, figure dan axis akan dibuat bersamaan. Jangan lupa, import dulu matplotlib sebelum membuat grafik.

13  fig, ax = plt.subplots()
14  
15  ax.scatter(x_mal, y_mal, c="r", label="Male")
16  ax.scatter(x_fem, y_fem, c="b", label="Female")

Membuat scatter plot dilakukan menggunakan method .scatter(). Beberapa argumen yang dimasukkan antara lain:

  • legend: Karena ada 2 scatterplot dalam 1 axis, maka harus diberi label mana grafik yang mana.
  • color: Digunakan untuk membedakan warna dari masing-masing scatter plot.
Karena 2 scatter plot berada pada 1 axis, maka hanya dibuat satu axis pada variable ax.

Baris ke 15 menunjukkan plot untuk data male. Scatter plot "male" diberi warna merah, sehingga digunakan argumen c="r". Dimana c adalah color, dan "r" adalah "red". Sedangkan untuk labelnya diberi nama "Male".

Baris ke 16 sama seperti sebelumnya, tapi untuk data female. Argumen c diberi nilai "b" yang berarti biru, dan label "Female".

Scatter plot pada axis sudah selesai dibuat dan siap ditampilkan. Tapi, hanya begitu belum cukup. Script di atas akan menghasilkan grafik polos seperti ini.

scatter_plot_polos

Biar lebih keren dan enak dilihat, elemen-elemen grafiknya bisa disesuaikan dengan beberapa pengaturan di bawah ini.

Mengatur Elemen Grafik

Grafik polos di atas harus ditambah judul, axis label, dan legend / label dari scatter plot. Label digunakan untuk menampilkan label yang sudah ditambahkan menggunakan argumen "label" pada proses sebelumnya.

Berikut ini scriptnya:

17  ax.set_title("Total Bill vs Tip", pad=15)
18  ax.set_xlabel("Total Bill", labelpad=15)
19  ax.set_ylabel("Tip", labelpad=15)
20  ax.legend()
21  
22  plt.show()

Judul, label, dan legend adalah bagian dari axis. Sehingga untuk menambahkannya dilakukan pada axis yang disimpan pada variabel ax.

Baris 17 digunakan untuk menambahkan judul pada grafik. Ditambahkan pad=15 agar ada jarak antara axis dengan judul.

Baris 18 dan 19 digunakan untuk menambahkan label pada sumbu x dan sumbu y. Untuk menambahkan jarak, ditambahkan attribute labelpad.

Dan yang terakhir pada baris 20, gunakan method .legend() untuk menampilkan label yang sudah ditambahkan pada statement pembuatan scatter plot. Jangan lupa tambahkan method plt.show() untuk menampilkan grafik.

Ketika script python ini di-run, maka muncul grafik seperti ini:

scatter_plot_full

Dengan sedikit modifikasi, scatter plot dapat digunakan untuk menjelaskan berbagai data.


Script Lengkap

Berikut ini adalah script lengkap untuk membuat scatter plot pada data dengan kategori berbeda.

1   import seaborn as sns
2   import matplotlib.pyplot as plt
3   
4   data = sns.load_dataset("tips")
5   
6   female = data[data["sex"] == "Female"]
7   x_fem = female["total_bill"].values
8   y_fem = female["tip"].values
9   
10  male = data[data["sex"] == "Male"]
11  x_mal = male["total_bill"].values
12  y_mal = male["tip"].values
13  
14  fig, ax = plt.subplots()
15  
16  ax.scatter(x_mal, y_mal, c="r", label="Male")
17  ax.scatter(x_fem, y_fem, c="b", label="Female")
18     
19  ax.set_title("Total Bill vs Tip", pad=15)
20  ax.set_xlabel("Total Bill", labelpad=15)
21  ax.set_ylabel("Tip", labelpad=15)
22  ax.legend()
23    
24  plt.show()

Posting Komentar untuk "Membuat Scatter Plot Menggunakan Data dengan Kategori yang Berbeda"