Line Chart (Diagram Garis)adalah jenis visualisasi terbaik untuk analisis tren waktu (time-series). Dengan menghubungkan titik-titik data secara kronologis, kita dapat melihat pola perubahan, kenaikan, atau penurunan suatu variabel dengan jelas.
Di tutorial ini, kita menggunakan format Jupyter Notebook (.ipynb) di VS Code. Format ini berbasis bahasa Python, namun memungkinkan kita menjalankan kode per blok (cell) dan langsung melihat hasil grafik di bawahnya tanpa harus membuka jendela baru.
2. Persiapan di VS Code
- Buat file baru di VS Code bernama
analisis_kemiskinan.ipynb. - Pastikan file dataset
Persentase Penduduk Miskin (P0) Menurut Provinsi dan Daerah, 2025.csvberada dalam satu folder yang sama. - Buka terminal VS Code (
Ctrl + ~) dan jalankan perintah install:
pip install pandas matplotlib seaborn
3. Cell 1: Import Library & Cleansing Dataset
Masukkan kode berikut pada >Cell 1 di Jupyter Notebook Anda, lalu tekan Shift + Enter untuk menjalankannya. Kode ini berfungsi membaca file CSV BPS 2025 dan merapikan kolom angka.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Atur style grafik agar modern dan bersih
sns.set_theme(style="whitegrid")
# Load file CSV BPS (skip 4 baris awal header mentah)
file_path = "Persentase Penduduk Miskin (P0) Menurut Provinsi dan Daerah, 2025.csv"
cols = [
'Provinsi',
'Perkotaan_Sem1', 'Perkotaan_Sem2', 'Perkotaan_Tahunan',
'Perdesaan_Sem1', 'Perdesaan_Sem2', 'Perdesaan_Tahunan',
'Jumlah_Sem1', 'Jumlah_Sem2', 'Jumlah_Tahunan'
]
df = pd.read_csv(file_path, skiprows=4, header=None, names=cols)
# Hapus baris kosong & bersihkan nama provinsi
df = df.dropna(subset=['Provinsi'])
df['Provinsi'] = df['Provinsi'].str.strip()
# Konversi kolom data ke format angka (float)
for col in cols[1:]:
df[col] = pd.to_numeric(df[col].astype(str).str.replace('-', 'nan'), errors='coerce')
# Tampilkan 5 baris pertama data yang sudah rapi
df[['Provinsi', 'Jumlah_Sem1', 'Jumlah_Sem2']].head()
4. Cell 2: Line Chart Tren Kemiskinan Nasional
Buat cell baru (Cell 2) di bawahnya. Kode ini akan membuat Line Chart perbandingan tren kemiskinan di Perkotaan, Perdesaan, dan Total Nasional antara Semester 1 (Maret 2025) dan Semester 2 (September 2025).
# Filter data khusus baris 'INDONESIA'
df_indo = df[df['Provinsi'] == 'INDONESIA'].iloc[0]
# Siapkan sumbu X (Periode) dan sumbu Y (Persentase)
periode = ['Sem 1 (Maret 2025)', 'Sem 2 (Sept 2025)']
perkotaan = [df_indo['Perkotaan_Sem1'], df_indo['Perkotaan_Sem2']]
perdesaan = [df_indo['Perdesaan_Sem1'], df_indo['Perdesaan_Sem2']]
total = [df_indo['Jumlah_Sem1'], df_indo['Jumlah_Sem2']]
# Membuat Plot Line Chart
plt.figure(figsize=(8, 5))
plt.plot(periode, perkotaan, marker='o', linewidth=2.5, label='Perkotaan', color='#2b5c8f')
plt.plot(periode, perdesaan, marker='s', linewidth=2.5, label='Perdesaan', color='#d9534f')
plt.plot(periode, total, marker='^', linewidth=2.5, linestyle='--', label='Total Nasional', color='#2e7d32')
# Menambahkan angka (label) langsung pada setiap titik data
for i in range(2):
plt.text(i, perkotaan[i] + 0.15, f"{perkotaan[i]:.2f}%", ha='center', fontweight='bold', color='#2b5c8f')
plt.text(i, perdesaan[i] + 0.15, f"{perdesaan[i]:.2f}%", ha='center', fontweight='bold', color='#d9534f')
plt.text(i, total[i] - 0.25, f"{total[i]:.2f}%", ha='center', fontweight='bold', color='#2e7d32')
# Estetika Grafik
plt.title('Tren Persentase Penduduk Miskin Indonesia (2025)', fontsize=12, fontweight='bold', pad=15)
plt.ylabel('Persentase Penduduk Miskin (%)')
plt.ylim(5, 12.5)
plt.legend(loc='upper right')
plt.tight_layout()
# Tampilkan grafik langsung di Notebook
plt.show()
5. Cell 3: Line Chart Perbandingan Antar Provinsi
Pada Cell 3, kita akan membuat komparasi tren perubahan tingkat kemiskinan pada 5 provinsi sampel (Aceh, Jawa Barat, Jawa Tengah, Jawa Timur, dan Papua).
# Pilih 5 provinsi sampel
prov_pilihan = ['ACEH', 'JAWA BARAT', 'JAWA TENGAH', 'JAWA TIMUR', 'PAPUA']
df_sampel = df[df['Provinsi'].isin(prov_pilihan)]
plt.figure(figsize=(9, 5))
# Loop untuk menggambar garis tiap provinsi
for _, row in df_sampel.iterrows():
y_values = [row['Jumlah_Sem1'], row['Jumlah_Sem2']]
plt.plot(periode, y_values, marker='o', linewidth=2, label=row['Provinsi'])
# Estetika Grafik
plt.title('Perbandingan Tren Kemiskinan Sampel Provinsi (2025)', fontsize=12, fontweight='bold', pad=15)
plt.ylabel('Persentase Penduduk Miskin (%)')
plt.legend(title='Provinsi', bbox_to_anchor=(1.02, 1), loc='upper left')
plt.tight_layout()
plt.show()
6. Tips Penting Visualisasi Tren
- Marker: Menggunakan tanda titik/kotak pada garis membantu penonton membaca posisi persis data pada sumbu waktu.
- Data Label: Menampilkan angka di samping titik data memudahkan pembacaan tanpa perlu mengira-ngira skala sumbu Y.
- Keunggulan Notebook: Grafik yang dihasilkan otomatis tersimpan di dalam file
.ipynbAnda.
7. Kesimpulan
Menggunakan Jupyter Notebook (.ipynb) membuat proses analisis data Python menjadi jauh lebih interaktif. Dengan Line Chart, kita bisa melihat bahwa tren angka kemiskinan di Indonesia pada tahun 2025 menunjukkan kecenderungan menurun dari Semester 1 ke Semester 2, baik di wilayah perkotaan maupun perdesaan.
