Menghighlight Data Gap dalam Scatter Plot dengan Python

Menghighlight Data Gap dalam Scatter Plot dengan Python

Pada umumnya, scatter plot digunakan untuk menganalisis data time-series. Namun, ketika terdapat data yang tidak tersedia (NaN), maka perlu dilakukan langkah untuk mengidentifikasi dan menghighlight data gap tersebut.

Dalam artikel ini, kita akan membahas bagaimana menghighlight data gap dalam scatter plot dengan menggunakan Python. Kita akan menggunakan library matplotlib dan pandas untuk membuat scatter plot dan mengidentifikasi data gap.

Contoh Data

Berikut adalah contoh data yang digunakan:

import pandas as pd
import numpy as np

days = pd.date_range('2021-03-08', periods=14, freq='D')
data = [2, 2.3, 3, np.nan, np.nan, 4.7, 3.4, 3.1, 2.7, np.nan, np.nan, np.nan, 4, 4.5]
df = pd.DataFrame({'idx': days, 'col': data})

Mengidentifikasi Data Gap

Kita akan menggunakan fungsi isna() dari library pandas untuk mengidentifikasi data gap. Fungsi ini mengembalikan nilai boolean yang menunjukkan apakah data tersebut adalah NaN atau tidak.

starts, stops = [], []
for idx, isna in enumerate(df['col'].isna()):
 if isna != df['col'].isna()[idx-1] and isna:
 starts.append(df.index[idx-1])
 elif isna != df['col'].isna()[idx-1] and not isna:
 stops.append(df.index[idx])

Menghighlight Data Gap

Kita akan menggunakan fungsi axvspan() dari library matplotlib untuk menghighlight data gap. Fungsi ini membuat garis vertikal yang menunjukkan awal dan akhir dari data gap.

for start, stop in zip(starts, stops):
 ax.fill_between([start, stop], 0, df['col'].max(), color='r', step='mid', linewidth='0')
 ax.plot(df.index, df['col'], color='b', linestyle='-', marker=',', label=ylabel)

Hasil

Berikut adalah contoh hasil dari program di atas:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.fill_between([start, stop], 0, df['col'].max(), color='r', step='mid', linewidth='0')
ax.plot(df.index, df['col'], color='b', linestyle='-', marker=',', label=ylabel)

plt.show()

Dalam contoh di atas, data gap akan ditampilkan dengan warna merah dan awal dan akhirnya akan ditunjukkan dengan garis vertikal. Sementara itu, data yang tersedia akan ditampilkan dengan warna biru.

Dengan cara ini, kita dapat menghighlight data gap dalam scatter plot dengan menggunakan Python. Kita juga dapat menyesuaikan tampilan grafik dengan cara mengatur parameter-parameter fungsi fill_between() dan plot().