Membuat Dual Y-Axis Line Plot

Membuat Dual Y-Axis Plot dengan Matplotlib Seaborn

Pada tutorial singkat kali ini kita akan membuat line plot yang memiliki dual axis pada sumbu Y. Line plot dengan dua sumbu Y sangat bermanfaat untuk memvisualisasikan dua set data dengan skala berbeda pada satu grafik. Library yang akan digunakan adalah matplotlib dan seaborn.

Misalkan kita memiliki data jumlah impresi dan jumlah klik dari suatu website seperti kode di bawah ini:

Python

import numpy as np 
import pandas as pd

data = pd.DataFrame({
    "Hari" : np.arange(1, 8),
    "Impresi" : np.array([1031, 1262, 1363, 1137, 1512, 1070, 967]),
    "Klik" : np.array([91, 143, 82, 75, 120, 103, 96])
})

print(data)

Output

# Output

   Hari  Impresi  Klik
0     1     1031    91
1     2     1262   143
2     3     1363    82
3     4     1137    75
4     5     1512   120
5     6     1070   103
6     7      967    96

Jika ingin melihat pola pergerakan nilai kedua kolom sekaligus secara visual, maka dapat dibuat dalam bentuk lineplot. Untuk membuat lineplot kedua kolom tersebut dapat dilakukan seperti kode berikut ini:

Python

import matplotlib.pyplot as plt 
import seaborn as sns

sns.set(style="white")

data.index = data["Hari"]

plt.subplots(figsize=(12, 6))

sns.lineplot(data=data[["Impresi", "Klik"]], 
             palette=["#E17A47", '#4AB19D'], lw=3,
             markers=["o", "s"], markersize=15)

plt.show()

Output

Membuat Dual Y-Axis Plot dengan Matplotlib Seaborn

Pada contoh line plot di atas, kita menampilkan data kolom Impresi dan Klik pada satu grafik yang sama. Pada line untuk kolom Impresi, kita dapat dilihat dengan jelas bagaimana pola pergerakan naik turunnya jumlah impresi dari hari pertama hingga hari ke tujuh. Sebagai contoh, kita dapat melihat kenaikan tajam pada hari ke-5 dibandingkan hari ke-4, serta penurunan yang tajam pada hari ke-6.

Namun tidak demikian dengan line untuk kolom Klik. Pada line tersebut kita tidak dapat dengan jelas melihat bagaimana pola pergerakan dari hari ke hari untuk jumlah klik. Line yang ditampilkan terkesan datar, seolah tidak bergejolak seperti line Impresi. Padahal, jika kita lihat nilainya perubahan nilainya sangat bergejolak, bahkan dapat dikatakan melebihi apa yang ada pada kolom Impresi.

Informasi yang hilang ini dikarenakan ukuran nilai data pada kolom Klik, jauh lebih kecil (sekitar 82-143) dibandingkan dengan nilai pada kolom impresi (sekitar 967-1512). Perbedaan skala yang besar ini menyebabkan perubahan pada kolom Klik tidak dapat begitu terlihat jika ditampilkan pada skala yang jauh lebih besar.

Dual Y-Axis Plot

Cara yang lebih tepat jika ingin menyandingkan kedua data pada satu grafik adalah menggunakan dua sumbu Y (dual Y-axis). Data pertama akan menggunakan sumbu Y yang berada pada sisi kiri, sementara data kedua menggunakan sumbu Y pada sisi kanan. Dengan demikian kita dapat menyandingkan kedua data secara bersamaan dan memperoleh gambaran yang lebih lengkap mengenai kondisi data.

Penerapannya menggunakan matplotlib yaitu melalui method twinx. Untuk plot yang dibuat menggunakan seaborn, maka kita perlu menentukan nilai parameter ax. Berikut ini contoh penerapan dual Y-axis plot menggunakan data yang sama seperrti sebelumnya.

Python

sns.set(style="white")

fig, ax_1 = plt.subplots(figsize=(12, 6))

# applies twinx pada ax_2 
ax_2 = ax_1.twinx() 

# set ax = ax_1 untuk plot pertama
sns.lineplot(x = data["Hari"], y = data["Impresi"], color = '#E17A47', 
             ax = ax_1, lw=2.5, marker="s", markersize=10)
# set ax = ax_2 untuk plot kedua
sns.lineplot(x = data["Hari"], y = data["Klik"], color = '#4AB19D', 
             ax = ax_2, marker='o', lw=2.5, markersize=10) 

# Menambahkan judul pada axis 
ax_1.set_xlabel('Hari')
ax_1.set_ylabel('Impresi', color='#E17A47')
ax_2.set_ylabel('Klik', color='#4AB19D')

# Menambahkan judul Plot
ax_1.set_title(label="Dual Y-Axis Plot", 
             fontsize=16,
             color="#0E2433",
             pad=15)

plt.show()

Output

Membuat Dual Y-Axis Plot dengan Matplotlib Seaborn

Tidak seperti grafik sebelumnya, pada grafik di atas dapat dilihat bagaimana pola pergerakan kedua data yang semakin jelas. Khususnya pada kolom Klik, perubahan nilai yang tadinya terlihat datar, pada plot ini menjadi sangat jelas bahwa nilai kolom Klik memiliki pola perubahan nilai yang bergejolak dari waktu ke waktu.

Tulisan Lainnya

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Isi