Visualisasi Data Efektif menggunakan Matplotlib dan Seaborn untuk Analisis Eksplorasi

Lhuqita Fazry
Data Science Matplotlib Seaborn
Visualisasi Data Efektif menggunakan Matplotlib dan Seaborn untuk Analisis Eksplorasi

Visualisasi merupakan langkah pertama yang esensial dalam Exploratory Data Analysis (EDA). Tanpa visualisasi yang tepat, pola tersembunyi dan anomali dalam dataset akan sulit terdeteksi. Matplotlib menyediakan kontrol granular atas setiap elemen grafik, sementara Seaborn membangun abstraksi di atasnya untuk menghasilkan statistical plot yang informatif dengan sintaks yang ringkas.

Kombinasi kedua library ini menjadi standar de facto dalam workflow Data Science. Matplotlib cocok untuk kustomisasi mendalam ketika kita membutuhkan kontrol penuh atas setiap detail visual, sedangkan Seaborn mempercepat proses eksplorasi dengan default estimator dan statistical function yang siap pakai.

Setup dan Dataset

Kita membutuhkan matplotlib, seaborn, pandas, dan numpy untuk tutorial ini. Dataset yang digunakan adalah dataset bawaan Seaborn agar fokus pada teknik visualisasi.

pythonpython
!pip install matplotlib seaborn pandas numpy

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# Load dataset bawaan Seaborn
df = sns.load_dataset('tips')
print(df.head())
print(df.describe())

Output:

text
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

       total_bill         tip        size
count  244.000000  244.000000  244.000000
mean    19.785943    2.998279    2.569672
std      8.902412    1.383638    0.951100
min      3.070000    1.000000    1.000000
25%     13.347500    2.000000    2.000000
50%     17.795000    2.900000    2.000000
75%     24.127500    3.562500    3.000000
max     50.810000   10.000000    6.000000

Dataset tips berisi informasi tentang tagihan makan, tip, jenis kelamin, waktu makan, dan ukuran grup. Dataset kecil ini cocok untuk mendemonstrasikan berbagai jenis plot.

Histogram dan Distribution Plot

Histogram memberikan gambaran distribusi dari variabel numerik. Kita bisa melihat sebaran data, kecenderungan central tendency, dan keberadaan outliers.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Histogram total_bill dengan Matplotlib
axes[0].hist(df['total_bill'], bins=20, color='#4C72B0', edgecolor='white')
axes[0].set_xlabel('Total Bill ($)')
axes[0].set_ylabel('Frequency')
axes[0].set_title('Distribution of Total Bill')

# Distribution plot dengan Seaborn (hist + KDE)
sns.histplot(data=df, x='total_bill', kde=True, ax=axes[1], color='#DD8452')
axes[1].set_title('Total Bill with KDE')

plt.tight_layout()
plt.show()

Output:

Output dari kode di atas

Seaborn menambahkan KDE (Kernel Density Estimation) curve di atas histogram, memberikan estimasi kontinu dari distribusi data. Curve ini membantu mengidentifikasi pola distribusi secara lebih halus dibanding histogram saja.

Scatter Plot dan Regresi

Scatter plot memperlihatkan hubungan antara dua variabel numerik. Dengan Seaborn, kita bisa langsung menambahkan regression line dan segmentasi berdasarkan variabel kategorikal.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Scatter plot dasar
sns.scatterplot(data=df, x='total_bill', y='tip', ax=axes[0], color='#4C72B0', alpha=0.7)
axes[0].set_title('Total Bill vs Tip')

# Scatter plot dengan regression line
sns.regplot(data=df, x='total_bill', y='tip', ax=axes[1], scatter_kws={'alpha': 0.5}, line_kws={'color': 'red'})
axes[1].set_title('Regression: Total Bill vs Tip')

plt.tight_layout()
plt.show()

Output:

Output dari kode di atas
Data Science with Python
Data Science • Beginner

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Daftar

Regresi linear pada scatter plot menunjukkan korelasi positif antara total_bill dan tip. Confidence interval di sekitar garis regresi mengindikasikan kepastian model — interval yang sempit menandakan data mendukung estimasi dengan baik.

Categorical Plot

Ketika ingin membandingkan distribusi numerik berdasarkan kategori, Seaborn menawarkan boxplot, violinplot, dan barplot yang masing-masing memberikan perspektif berbeda.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 3, figsize=(15, 5))

# Boxplot: distribusi tip per hari
sns.boxplot(data=df, x='day', y='tip', ax=axes[0], hue='day', palette='Set2', legend=False)
axes[0].set_title('Tip Distribution by Day')

# Violin plot: distribusi + density
sns.violinplot(data=df, x='day', y='tip', ax=axes[1], hue='day', palette='Set2', inner='quartile', legend=False)
axes[1].set_title('Violin: Tip by Day')

# Bar plot: rata-rata tip per hari dengan error bars
sns.barplot(data=df, x='day', y='tip', ax=axes[2], hue='day', palette='Set2', errorbar='sd', legend=False)
axes[2].set_title('Mean Tip by Day')

plt.tight_layout()
plt.show()

Output:

Output dari kode di atas

Boxplot menampilkan median, quartile, dan outliers secara ringkas. Violin plot menambahkan estimasi density pada boxplot, memberikan informasi distribusi yang lebih kaya. Bar plot menunjukkan mean dengan error bars yang merepresentasikan standar deviasi — cocok untuk presentasi ringkas kepada stakeholder.

Heatmap Korelasi

Heatmap korelasi merupakan salah satu plot paling informatif untuk memahami hubungan multivariat. Korelasi antar variabel numerik divisualisasikan dengan skala warna, membuat pattern identification menjadi lebih intuitif.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = sns.load_dataset('tips')

# Pilih kolom numerik saja
numeric_df = df.select_dtypes(include=[np.number])
corr = numeric_df.corr()

plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='RdBu_r', center=0, fmt='.2f',
            square=True, linewidths=0.5)
plt.title('Correlation Heatmap - Tips Dataset')

plt.show()

print('Correlation matrix:')
print(corr)

Output:

text
Correlation matrix:
            total_bill       tip      size
total_bill    1.000000  0.675734  0.598315
tip           0.675734  1.000000  0.489299
size          0.598315  0.489299  1.000000
Output dari kode di atas

Parameter annot=True menambahkan nilai korelasi pada setiap sel. cmap='RdBu_r' menggunakan skala merah-biru yang intuitif — merah menandakan korelasi positif, biru menandakan korelasi negatif. Nilai yang mendekati 0 menunjukkan tidak ada hubungan linear yang signifikan.

Pairplot untuk Analisis Multivariat

Untuk dataset dengan beberapa variabel numerik, pairplot menghasilkan matriks scatter plot antar semua pasangan variabel. Plot diagonal menampilkan distribusi masing-masing variabel.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('tips')

g = sns.pairplot(df, vars=['total_bill', 'tip', 'size'], hue='time',
                 palette={'Lunch': '#4C72B0', 'Dinner': '#DD8452'},
                 diag_kind='kde', plot_kws={'alpha': 0.6})

plt.show()

Output:

Output dari kode di atas

Parameter hue='time' memisahkan data berdasarkan waktu makan (Lunch vs Dinner), mengungkap perbedaan pola antar kategori secara visual. diag_kind='kde' menampilkan distribusi kontinu pada diagonal, lebih smooth dibanding histogram default.

Kustomisasi Matplotlib

Seaborn mengabstraksi banyak detail kustomisasi, namun Matplotlib tetap diperlukan untuk kontrol penuh. Beberapa teknik kustomisasi yang sering digunakan dalam laporan profesional.

pythonpython
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('tips')

# Set style global
sns.set_style('whitegrid')

fig, ax = plt.subplots(figsize=(10, 6))
sns.scatterplot(data=df, x='total_bill', y='tip', hue='time', style='smoker',
                size='size', sizes=(30, 200), ax=ax, alpha=0.7)

ax.set_xlabel('Total Bill ($)', fontsize=12)
ax.set_ylabel('Tip ($)', fontsize=12)
ax.set_title('Tip Analysis: Multi-Dimensional View', fontsize=14, fontweight='bold')
ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)

plt.tight_layout()
plt.show()

Output:

Output dari kode di atas

Plot di atas menggabungkan empat dimensi data dalam satu visualisasi: sumbu x (total_bill), sumbu y (tip), warna (time), dan ukuran marker (size). Pendekatan ini efektif untuk presentation karena satu grafik memberikan insight dari berbagai sudut sekaligus.

Best Practices Visualisasi EDA

Beberapa prinsip yang perlu diperhatikan saat membuat visualisasi untuk EDA: pilih jenis plot yang sesuai dengan tipe data (categorical vs numerical), gunakan palet warna yang konsisten, hindari clutter dengan membatasi jumlah variabel per plot, dan selalu tambahkan label sumbu serta judul yang deskriptif.

Matplotlib adalah fondasi yang memberikan kontrol penuh, sementara Seaborn mempercepat workflow dengan menyediakan statistical plot yang siap pakai. Kombinasi keduanya memungkinkan kita menghasilkan visualisasi yang informatif dan estetik tanpa menulis kode yang bertele-tele.

Mau menguasai teknik visualisasi data dan skill Data Science lainnya secara mendalam? Bergabunglah dengan Data Science Bootcamp di Rumah Coding. Kurikulum berbasis proyek nyata dengan bimbingan mentor berpengalaman.

Course Terkait

E-commerce Sales Dashboard
Premium Course Data Science

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Capstone Project

E-commerce Sales Dashboard

  • Data Cleaning Pipeline
  • Interactive Charts
  • Sales Forecasting Model
7 Weeks Beginner
Lihat Detail Course

Artikel Terkait