Python untuk Data Analytics: Matplotlib, Seaborn dan Visualisasi untuk Wawancara Kerja
Kuasai visualisasi data Python dengan Matplotlib dan Seaborn. Tutorial praktis mencakup grafik, styling, subplot, dan pertanyaan wawancara umum untuk posisi data analytics di tahun 2026.

Visualisasi data Python menjadi salah satu keahlian yang paling sering diuji dalam wawancara data analytics. Perekrut mengharapkan kandidat mampu menghasilkan grafik yang bersih dan mudah dibaca dari data mentah — serta menjelaskan pilihan desain mereka dengan percaya diri.
Tutorial ini membahas Matplotlib 3.10 dan Seaborn 0.13, dua pustaka yang mendominasi wawancara teknis untuk posisi analis dan data scientist. Setiap contoh kode dapat dijalankan langsung dengan Python 3.12+.
Sebagian besar wawancara data analytics mencakup sesi live coding di mana kandidat harus menghasilkan visualisasi dari dataset dalam waktu kurang dari 15 menit. Pola-pola di bawah ini langsung berkaitan dengan latihan tersebut.
Menyiapkan Lingkungan Visualisasi Data Python
Sebelum menulis kode grafik apa pun, lingkungan pengembangan memerlukan dependensi yang tepat. Virtual environment yang bersih mencegah konflik versi antara Matplotlib, Seaborn, dan fondasi NumPy/Pandas yang digunakan bersama.
# setup.sh
python -m venv venv
source venv/bin/activate
pip install matplotlib==3.10.8 seaborn==0.13.2 pandas numpyPemeriksaan cepat untuk memastikan semua paket terpasang dengan benar:
# verify_install.py
import matplotlib
import seaborn as sns
import pandas as pd
print(f"Matplotlib: {matplotlib.__version__}")
print(f"Seaborn: {sns.__version__}")
print(f"Pandas: {pd.__version__}")Setelah dependensi terkunci, langkah berikutnya berfokus pada dasar-dasar Matplotlib — fondasi untuk setiap grafik Seaborn.
Dasar-Dasar Matplotlib: Figure, Axes dan API Berorientasi Objek
Matplotlib menawarkan dua API: state machine pyplot dan antarmuka berorientasi objek (OO). API OO memberikan kontrol eksplisit atas setiap elemen dan merupakan standar yang diharapkan dalam kode profesional maupun wawancara kerja.
# bar_chart_oo.py
import matplotlib.pyplot as plt
import numpy as np
# Sample quarterly revenue data
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue = [42_000, 58_000, 51_000, 67_000]
# Create figure and axes explicitly
fig, ax = plt.subplots(figsize=(8, 5))
# Draw bars with a specific color
ax.bar(quarters, revenue, color="#2563eb", width=0.5)
# Label axes clearly — interviewers check for this
ax.set_xlabel("Quarter")
ax.set_ylabel("Revenue (USD)")
ax.set_title("Quarterly Revenue — 2025")
# Format y-axis with dollar amounts
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"${x:,.0f}"))
# Remove top and right spines for a cleaner look
ax.spines[["top", "right"]].set_visible(False)
plt.tight_layout()
plt.savefig("quarterly_revenue.png", dpi=150)
plt.show()Detail penting yang diperhatikan pewawancara: pembuatan fig, ax secara eksplisit alih-alih menggunakan plt.plot(), label sumbu yang mudah dibaca, nilai tick yang terformat, dan penghapusan elemen grafik yang tidak perlu (spines berlebihan). Pilihan-pilihan kecil ini menandakan pola pikir tingkat produksi.
Membuat Subplot untuk Analisis Perbandingan
Wawancara kerja sering kali mengharuskan perbandingan beberapa metrik secara berdampingan. Fungsi subplots() menangani hal ini dengan tata letak grid.
# subplots_comparison.py
import matplotlib.pyplot as plt
import numpy as np
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
users = [1200, 1350, 1500, 1420, 1680, 1820]
revenue = [24_000, 27_000, 30_000, 28_400, 33_600, 36_400]
# Two side-by-side plots sharing the x-axis
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5), sharey=False)
# Left panel: user growth as a line chart
ax1.plot(months, users, marker="o", color="#2563eb", linewidth=2)
ax1.set_title("Monthly Active Users")
ax1.set_ylabel("Users")
ax1.spines[["top", "right"]].set_visible(False)
# Right panel: revenue as a bar chart
ax2.bar(months, revenue, color="#16a34a", width=0.5)
ax2.set_title("Monthly Revenue")
ax2.set_ylabel("Revenue (USD)")
ax2.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"${x:,.0f}"))
ax2.spines[["top", "right"]].set_visible(False)
fig.suptitle("Product Metrics — H1 2025", fontsize=14, fontweight="bold")
plt.tight_layout()
plt.savefig("product_metrics.png", dpi=150)
plt.show()Penggunaan sharey=False memungkinkan setiap panel memiliki skala sendiri — pendapatan dalam dolar dan pengguna sebagai hitungan memiliki besaran yang berbeda. Fungsi suptitle menambahkan judul utama di atas kedua subplot.
Kandidat sering menggunakan plt.plot() untuk semua kebutuhan visualisasi alih-alih API berorientasi objek. Ketika pewawancara meminta penambahan sumbu y kedua atau penyesuaian subplot tunggal, pendekatan pyplot menjadi tidak memadai. Selalu gunakan fig, ax = plt.subplots() sebagai standar.
Plot Statistik Seaborn: Dari Distribusi hingga Korelasi
Seaborn dibangun di atas Matplotlib dan mengkhususkan diri dalam visualisasi statistik. Di mana Matplotlib memerlukan konfigurasi manual, Seaborn menyimpulkan default yang masuk akal dari struktur data.
Analisis distribusi — salah satu tugas wawancara yang paling umum — hanya membutuhkan satu pemanggilan fungsi:
# distribution_analysis.py
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Simulate salary data for two departments
np.random.seed(42)
data = pd.DataFrame({
"salary": np.concatenate([
np.random.normal(75_000, 12_000, 200), # Engineering
np.random.normal(65_000, 10_000, 150), # Marketing
]),
"department": ["Engineering"] * 200 + ["Marketing"] * 150
})
# KDE plot comparing salary distributions
fig, ax = plt.subplots(figsize=(10, 5))
sns.kdeplot(
data=data,
x="salary",
hue="department", # Automatically splits by category
fill=True, # Shaded area under the curve
alpha=0.4,
palette=["#2563eb", "#dc2626"],
ax=ax # Attach to our explicit axes
)
ax.set_title("Salary Distribution by Department")
ax.set_xlabel("Annual Salary (USD)")
ax.xaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"${x:,.0f}"))
ax.spines[["top", "right"]].set_visible(False)
plt.tight_layout()
plt.savefig("salary_distribution.png", dpi=150)
plt.show()Parameter hue membagi data secara otomatis, dan fill=True membuat area yang tumpang tindih terlihat jelas. Pola ini — mengelompokkan distribusi berdasarkan kategori — muncul di hampir setiap panel wawancara analytics.
Siap menguasai wawancara Data Analytics Anda?
Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.
Heatmap Seaborn untuk Matriks Korelasi
Heatmap korelasi mengungkap hubungan antar variabel numerik secara sekilas. Pewawancara menggunakannya untuk menguji apakah kandidat dapat mengidentifikasi multikolinearitas atau menemukan hubungan fitur yang kuat.
# correlation_heatmap.py
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Simulate e-commerce metrics
np.random.seed(42)
n = 500
page_views = np.random.poisson(15, n)
time_on_site = page_views * 2.5 + np.random.normal(0, 5, n)
cart_adds = np.random.binomial(page_views, 0.3)
purchases = np.random.binomial(cart_adds, 0.4)
df = pd.DataFrame({
"page_views": page_views,
"time_on_site": time_on_site,
"cart_adds": cart_adds,
"purchases": purchases
})
# Compute Pearson correlation
corr_matrix = df.corr()
fig, ax = plt.subplots(figsize=(8, 6))
sns.heatmap(
corr_matrix,
annot=True, # Show correlation values in cells
fmt=".2f", # Two decimal places
cmap="RdBu_r", # Diverging colormap centered on 0
vmin=-1, vmax=1, # Fixed scale for consistency
square=True, # Square cells
linewidths=0.5,
ax=ax
)
ax.set_title("E-commerce Metrics Correlation")
plt.tight_layout()
plt.savefig("correlation_heatmap.png", dpi=150)
plt.show()Colormap divergen RdBu_r membuat korelasi positif berwarna biru dan korelasi negatif berwarna merah — sebuah konvensi yang diharapkan pewawancara. Pengaturan vmin=-1 dan vmax=1 memastikan skala warna tetap dapat diinterpretasikan terlepas dari rentang data aktual.
Styling Grafik untuk Presentasi Profesional
Output Matplotlib mentah terlihat usang. Beberapa baris konfigurasi dapat mengubah grafik menjadi visual siap presentasi yang menunjukkan perhatian terhadap detail selama wawancara.
# professional_styling.py
import matplotlib.pyplot as plt
import seaborn as sns
# Apply Seaborn's built-in theme
sns.set_theme(
style="whitegrid", # Clean background with grid lines
palette="muted", # Professional color palette
font_scale=1.1 # Slightly larger text
)
# Global Matplotlib overrides
plt.rcParams.update({
"figure.facecolor": "white",
"axes.facecolor": "white",
"font.family": "sans-serif",
"axes.titlesize": 14,
"axes.labelsize": 12,
})Menerapkan sns.set_theme() di bagian atas skrip menyebarkan styling yang konsisten ke setiap grafik berikutnya. Selama wawancara, hal ini menghindari pemborosan waktu untuk pemformatan per-grafik.
Seaborn 0.13 telah menghentikan penggunaan set_style() dan set_palette() sebagai panggilan terpisah. Fungsi set_theme() yang terpadu menggantikan keduanya. Jawaban Stack Overflow yang lebih lama masih mereferensikan API yang sudah usang — hindari penggunaannya dalam wawancara 2026.
Pertanyaan Wawancara Visualisasi Data yang Umum
Selain coding, pewawancara juga menguji pemahaman konseptual tentang praktik terbaik visualisasi. Pertanyaan-pertanyaan di bawah ini muncul secara konsisten dalam wawancara data analytics dan data science.
Kapan sebaiknya menggunakan bar chart dibandingkan line chart? Bar chart menampilkan perbandingan antar kategori diskrit (departemen, jenis produk, wilayah). Line chart menunjukkan tren dalam interval yang kontinu atau berurutan (time series, pengukuran sekuensial). Menggunakan line chart untuk kategori yang tidak berurutan menyiratkan hubungan palsu antara bar yang berdekatan.
Apa yang membuat sebuah grafik menyesatkan? Sumbu y yang terpotong, dual sumbu y dengan skala berbeda, efek 3D pada data 2D, dan rentang waktu yang dipilih secara selektif — semua hal ini mendistorsi persepsi. Solusinya: mulai sumbu y dari nol untuk bar chart, beri label sumbu secara eksplisit, dan hindari elemen dekoratif yang mengaburkan data.
Bagaimana pemilihan palet warna memengaruhi interpretasi data?
Palet sekuensial (terang-ke-gelap) cocok untuk data terurut seperti suhu atau pendapatan. Palet divergen (dua warna bertemu di pusat netral) menyoroti deviasi dari titik tengah, seperti untung/rugi atau koefisien korelasi. Palet kategorikal menggunakan warna berbeda untuk kelompok yang tidak terkait. Palet ramah buta warna (seperti colorblind atau muted dari Seaborn) memastikan aksesibilitas — detail yang membedakan kandidat senior.
Jelaskan perbedaan antara plt.show() dan plt.savefig().
plt.show() merender gambar ke jendela interaktif dan menghapus status gambar setelahnya. plt.savefig() menulis gambar ke file tanpa menghapusnya. Memanggil savefig() setelah show() menghasilkan file kosong — bug yang umum terjadi. Urutan yang benar: savefig() terlebih dahulu, kemudian show().
Menggabungkan Semuanya: Latihan Wawancara End-to-End
Latihan take-home atau live coding yang tipikal menggabungkan pemuatan data, pembersihan, dan beberapa jenis grafik. Contoh berikut mencerminkan soal wawancara nyata dari tim analytics.
# interview_exercise.py
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
sns.set_theme(style="whitegrid", palette="muted", font_scale=1.05)
# Simulate 12 months of product data
np.random.seed(42)
months = pd.date_range("2025-01", periods=12, freq="MS")
df = pd.DataFrame({
"month": months,
"revenue": np.cumsum(np.random.normal(5000, 2000, 12)) + 50_000,
"customers": np.cumsum(np.random.poisson(50, 12)) + 500,
"churn_rate": np.clip(np.random.normal(0.05, 0.015, 12), 0.01, 0.12)
})
fig, axes = plt.subplots(1, 3, figsize=(18, 5))
# Panel 1: Revenue trend
axes[0].plot(df["month"], df["revenue"], marker="o", color="#2563eb")
axes[0].set_title("Revenue Trend")
axes[0].set_ylabel("Revenue (USD)")
axes[0].yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"${x:,.0f}"))
axes[0].tick_params(axis="x", rotation=45)
axes[0].spines[["top", "right"]].set_visible(False)
# Panel 2: Customer growth
axes[1].bar(df["month"], df["customers"], color="#16a34a", width=20)
axes[1].set_title("Customer Growth")
axes[1].set_ylabel("Total Customers")
axes[1].tick_params(axis="x", rotation=45)
axes[1].spines[["top", "right"]].set_visible(False)
# Panel 3: Churn rate with threshold line
axes[2].plot(df["month"], df["churn_rate"], marker="s", color="#dc2626")
axes[2].axhline(y=0.05, color="gray", linestyle="--", label="Target: 5%")
axes[2].set_title("Monthly Churn Rate")
axes[2].set_ylabel("Churn Rate")
axes[2].yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"{x:.1%}"))
axes[2].tick_params(axis="x", rotation=45)
axes[2].spines[["top", "right"]].set_visible(False)
axes[2].legend()
fig.suptitle("Product Dashboard — FY 2025", fontsize=14, fontweight="bold")
plt.tight_layout()
plt.savefig("interview_dashboard.png", dpi=150)
plt.show()Latihan ini mendemonstrasikan tiga jenis grafik dalam tata letak terpadu, pemformatan sumbu yang tepat, garis referensi untuk target churn, dan styling yang konsisten. Ini adalah elemen-elemen yang tepat yang dinilai pewawancara.
Kesimpulan
- API berorientasi objek Matplotlib (
fig, ax = plt.subplots()) memberikan kontrol penuh dan merupakan standar yang diharapkan dalam lingkungan profesional maupun wawancara - Parameter
hueSeaborn dan fungsi statistik bawaan (KDE, heatmap) menangani analisis berkelompok dengan kode minimal - Heatmap korelasi dengan colormap divergen dan skala tetap (
vmin=-1, vmax=1) merupakan elemen pokok wawancara analytics - Selalu panggil
savefig()sebelumshow()untuk menghindari file output kosong - Styling yang bersih — spines yang dihapus, label tick terformat, judul eksplisit — menandakan pemikiran berkualitas produksi kepada pewawancara
- Berlatihlah membangun dashboard multi-panel di bawah tekanan waktu: sebagian besar sesi live coding mengalokasikan 10-15 menit per tugas visualisasi
Mulai berlatih!
Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.
Tag
Bagikan
Artikel terkait

25 Pertanyaan Wawancara Data Analytics Terpopuler Tahun 2026
Persiapkan wawancara data analyst dengan 25 pertanyaan terpopuler tahun 2026, mencakup SQL, Python, statistik, visualisasi, dan pertanyaan behavioral lengkap dengan contoh kode.

SQL untuk Data Analyst: Window Functions, CTE, dan Query Tingkat Lanjut
Panduan lengkap SQL window functions, CTE, dan pola query analitik tingkat lanjut untuk data analyst. Dilengkapi contoh kode praktis dan teknik optimasi performa.

Power BI vs Tableau 2026: Alat Mana yang Harus Dipelajari?
Perbandingan lengkap Power BI vs Tableau meliputi harga, fitur AI, visualisasi, dan prospek karier di tahun 2026. Panduan berbasis data untuk analis yang memilih platform BI berikutnya.