Skip to main content

Visualisasi Data dengan NumPy

NumPy dan Matplotlib merupakan dua library yang sangat sering digunakan secara bersama-sama dalam Data Science.

NumPy digunakan untuk membuat dan mengolah data numerik dalam bentuk array, sedangkan Matplotlib digunakan untuk mengubah data tersebut menjadi visualisasi.

Secara sederhana:

NumPy
↓
Membuat / mengolah data numerik
↓
Matplotlib
↓
Membuat visualisasi
↓
Memahami pola data

Contoh workflow:

Data
↓
NumPy Array
↓
Matplotlib
↓
Line Plot / Scatter / Bar
↓
Analisis

Pemahaman hubungan antara NumPy dan Matplotlib merupakan dasar penting sebelum mempelajari visualisasi data yang lebih kompleks.

Persiapan Library​

Import library yang akan digunakan:

import matplotlib.pyplot as plt
import numpy as np

Pada materi ini:

np
↓
NumPy

plt
↓
Matplotlib Pyplot

Kita akan menggunakan NumPy untuk membuat data dan Matplotlib untuk memvisualisasikannya.

Membuat Data dengan np.linspace()​

Salah satu fungsi NumPy yang berguna untuk membuat data visualisasi adalah:

np.linspace()

linspace merupakan singkatan dari linear space.

Fungsi ini digunakan untuk membuat sejumlah angka yang memiliki jarak yang sama antara nilai awal dan nilai akhir.

Sintaks dasarnya:

np.linspace(start, stop, num)

Parameter:

ParameterKeterangan
startNilai awal
stopNilai akhir
numJumlah data yang ingin dibuat

Contoh np.linspace()​

Misalnya kita ingin membuat 100 data poin dari 0 sampai 10:

x = np.linspace(0, 10, 100)

Kita dapat melihat hasilnya:

print(x)

Hasilnya akan berupa array dengan 100 nilai yang tersebar secara merata dari 0 hingga 10.

Kita juga dapat memeriksa jumlah elemennya:

print(x.size)

Hasil:

100

Memeriksa nilai awal:

print(x[0])

Hasil:

0.0

Memeriksa nilai terakhir:

print(x[-1])

Hasil:

10.0

Memahami linspace() Secara Visual​

Jika kita membuat:

x = np.linspace(0, 10, 5)

maka kita mendapatkan lima titik yang tersebar secara merata:

0 ───── 2.5 ───── 5 ───── 7.5 ───── 10

Contoh:

print(x)

Hasil:

[ 0. 2.5 5. 7.5 10. ]

Berbeda dengan np.arange(), np.linspace() memungkinkan kita menentukan jumlah sampel yang diinginkan.

linspace() vs arange()​

Kedua fungsi tersebut sama-sama dapat digunakan untuk membuat sequence angka, tetapi cara penggunaannya berbeda.

np.arange()​

Kita menentukan nilai:

start
stop
step

Contoh:

np.arange(0, 10, 2)

Hasil:

[0 2 4 6 8]

np.linspace()​

Kita menentukan:

start
stop
jumlah data

Contoh:

np.linspace(0, 10, 5)

Hasil:

[0. 2.5 5. 7.5 10.]

Perbandingan:

FungsiFokus
np.arange()Menentukan step
np.linspace()Menentukan jumlah sampel

np.linspace() sangat berguna dalam visualisasi fungsi matematika karena kita dapat mengontrol jumlah titik yang digunakan untuk menggambar kurva.

Membuat Line Plot​

Setelah membuat data x, kita dapat membuat line plot.

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

ax.plot(x, x**2)

plt.show()

matplotlib

Pada contoh tersebut:

x

merupakan data pada sumbu X.

Sedangkan:

x**2

merupakan data pada sumbu Y.

Sehingga hubungan datanya adalah:

y = x²

Matplotlib kemudian menghubungkan titik-titik tersebut menjadi sebuah garis.

Mengapa Menggunakan Banyak Data Point?​

Perhatikan:

x = np.linspace(0, 10, 10)

dibandingkan:

x = np.linspace(0, 10, 100)

Semakin banyak titik yang digunakan untuk merepresentasikan fungsi kontinu, biasanya visualisasi kurva akan terlihat semakin halus.

Contoh:

10 points
●────●────●────●────●

100 points
●●●●●●●●●●●●●●●●●●●●

Namun, jumlah titik yang lebih banyak tidak selalu berarti lebih baik. Jumlah sampel tetap perlu disesuaikan dengan kebutuhan visualisasi dan ukuran data.

Scatter Plot​

Selain line plot, Matplotlib menyediakan scatter plot.

Scatter plot digunakan untuk menampilkan data sebagai kumpulan titik.

Sintaks:

ax.scatter(x, y)

Contoh:

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

ax.scatter(x, x**2)

plt.show()

Berbeda dengan line plot:

ax.plot(x, x**2)

scatter plot:

ax.scatter(x, x**2)

tidak menghubungkan titik-titik tersebut dengan garis.

Kapan Menggunakan Scatter Plot?​

Scatter plot berguna ketika kita ingin melihat:

  • Persebaran data.
  • Hubungan antara dua variabel.
  • Pola data.
  • Outlier.
  • Korelasi secara visual.

Contohnya:

Y
│
│ ●
│ ●
│ ●
│ ●
│
└──────────────── X

Scatter plot sangat sering digunakan dalam Exploratory Data Analysis atau EDA.

Contoh Scatter Plot dengan Fungsi Eksponensial​

Kita dapat menggunakan NumPy untuk membuat fungsi eksponensial.

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

ax.scatter(x, np.exp(x))

plt.show()

matplotlib

Fungsi:

np.exp(x)

menghasilkan nilai:

eˣ

Dengan scatter plot, kita dapat melihat bagaimana nilai tersebut meningkat seiring bertambahnya x.

Contoh Scatter Plot dengan Fungsi Sinus​

NumPy juga menyediakan fungsi trigonometri seperti:

np.sin()

Contoh:

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

ax.scatter(x, np.sin(x))

plt.show()

matplotlib

Fungsi:

np.sin(x)

menghasilkan pola gelombang.

Visualisasi tersebut dapat membantu kita memahami hubungan antara fungsi matematika dan grafik.

Line Plot vs Scatter Plot​

Perbedaan dasar:

PlotKarakteristikPenggunaan
Line PlotTitik dihubungkan dengan garisTren dan data kontinu
Scatter PlotData ditampilkan sebagai titikPersebaran dan hubungan antarvariabel

Secara visual:

Line Plot

●────●────●────●────●

Sedangkan:

Scatter Plot

● ●

●

● ●

Pemilihan jenis plot harus disesuaikan dengan tujuan analisis.

Bar Plot​

Jenis visualisasi berikutnya adalah bar plot.

Bar plot digunakan untuk membandingkan nilai berdasarkan kategori.

Contohnya kita memiliki data harga produk:

nut_butter_prices = {
"Almond butter": 10,
"Peanut butter": 8,
"Cashew butter": 12,
}

Data tersebut berbentuk Python dictionary.

Strukturnya:

Kategori Harga
-----------------------
Almond butter 10
Peanut butter 8
Cashew butter 12

Kita dapat mengubahnya menjadi bar plot.

fig, ax = plt.subplots()

ax.bar(
nut_butter_prices.keys(),
height=nut_butter_prices.values()
)

plt.show()

matplotlib

Memahami ax.bar()​

Pada kode:

ax.bar(
nut_butter_prices.keys(),
height=nut_butter_prices.values()
)

bagian:

nut_butter_prices.keys()

digunakan sebagai kategori pada sumbu X.

Sedangkan:

nut_butter_prices.values()

digunakan sebagai tinggi batang.

Secara konsep:

X
↓
Kategori

Y
↓
Nilai / tinggi batang

Menambahkan Title dan Label​

Agar grafik lebih informatif, tambahkan title dan label.

fig, ax = plt.subplots()

ax.bar(
nut_butter_prices.keys(),
height=nut_butter_prices.values()
)

ax.set(
title="Toko Mentega Kacang",
xlabel="Jenis Mentega",
ylabel="Harga ($)"
)

plt.show()

matplotlib

Sekarang pembaca dapat memahami:

Title
→ Apa yang ditampilkan?

X Label
→ Apa kategori pada sumbu X?

Y Label
→ Apa nilai pada sumbu Y?

Contoh Lengkap Bar Plot​

import matplotlib.pyplot as plt

nut_butter_prices = {
"Almond butter": 10,
"Peanut butter": 8,
"Cashew butter": 12,
}

fig, ax = plt.subplots(figsize=(10, 6))

ax.bar(
nut_butter_prices.keys(),
height=nut_butter_prices.values()
)

ax.set(
title="Harga Nut Butter",
xlabel="Jenis Nut Butter",
ylabel="Harga ($)"
)

plt.show()

Mengapa Bar Plot Cocok untuk Data Kategori?​

Misalnya kita ingin membandingkan:

Produk A → 10
Produk B → 8
Produk C → 12

Bar plot membuat perbandingan tersebut mudah dilihat:

Produk A ██████████ 10
Produk B ████████ 8
Produk C ████████████ 12

Semakin tinggi atau panjang batang, semakin besar nilainya.

Karena itu, bar plot sangat cocok untuk membandingkan nilai antar kategori.

Tiga Plot Dasar yang Perlu Dipahami​

Pada tahap awal belajar Matplotlib, tiga jenis plot yang sangat penting adalah:

Line Plot
↓
Melihat tren / hubungan kontinu

Scatter Plot
↓
Melihat persebaran data

Bar Plot
↓
Membandingkan kategori

Tabel perbandingan:

JenisFungsi UtamaContoh
LineMelihat trenPenjualan dari waktu ke waktu
ScatterMelihat hubungan/persebaranTinggi vs berat
BarMembandingkan kategoriHarga produk

Menggunakan Object-Oriented API​

Pada materi sebelumnya kita telah membahas:

fig, ax = plt.subplots()

Pola ini akan menjadi pola utama dalam materi Matplotlib.

Contoh:

fig, ax = plt.subplots()

ax.plot(x, y)

plt.show()

Kita memiliki:

fig
↓
Figure

ax
↓
Axes

Kemudian plotting dilakukan pada:

ax

Contohnya:

ax.plot()
ax.scatter()
ax.bar()

Mengapa fig, ax = plt.subplots() Digunakan?​

Pola:

fig, ax = plt.subplots()

memberikan struktur yang jelas antara:

Figure
↓
Axes
↓
Plot

Ketika visualisasi menjadi lebih kompleks, pendekatan ini memudahkan kita mengelola beberapa Axes.

Karena itu, kita akan mempertahankan pola ini dalam materi berikutnya.

Menggunakan Semicolon​

Ketika menjalankan kode plotting di Jupyter Notebook, terkadang kita dapat melihat output berupa representasi objek.

Misalnya:

ax.plot(x, x**2)

Notebook dapat menampilkan representasi objek Line2D.

Jika ingin menyembunyikan output tersebut, kita dapat menggunakan:

ax.plot(x, x**2);

Titik koma hanya menghilangkan representasi output dari ekspresi tersebut pada notebook.

Alternatif yang lebih eksplisit adalah:

ax.plot(x, x**2)

plt.show()

Perlu dipahami bahwa semicolon bukan bagian penting dari proses plotting itu sendiri.

Contoh Workflow Lengkap​

Berikut workflow sederhana yang menggabungkan NumPy dan Matplotlib:

import numpy as np
import matplotlib.pyplot as plt

# 1. Membuat data
x = np.linspace(0, 10, 100)

# 2. Membuat Figure dan Axes
fig, ax = plt.subplots()

# 3. Membuat plot
ax.plot(x, x**2)

# 4. Menambahkan informasi
ax.set(
title="Fungsi Kuadrat",
xlabel="X",
ylabel="Y"
)

# 5. Menampilkan grafik
plt.show()

Workflow:

Import
↓
np.linspace()
↓
Membuat data X
↓
Membuat Figure + Axes
↓
Plot
↓
Customization
↓
Show

Contoh Membandingkan Tiga Jenis Plot​

Kita dapat menggunakan data yang sama untuk memahami perbedaan jenis visualisasi.

Line Plot​

fig, ax = plt.subplots()

ax.plot(x, x**2)

ax.set(
title="Line Plot",
xlabel="X",
ylabel="Y"
)

plt.show()

Scatter Plot​

fig, ax = plt.subplots()

ax.scatter(x, x**2)

ax.set(
title="Scatter Plot",
xlabel="X",
ylabel="Y"
)

plt.show()

Bar Plot​

Untuk bar plot, kita biasanya menggunakan data kategori:

products = ["Almond", "Peanut", "Cashew"]
prices = [10, 8, 12]

fig, ax = plt.subplots()

ax.bar(products, prices)

ax.set(
title="Harga Produk",
xlabel="Produk",
ylabel="Harga ($)"
)

plt.show()

Ketiga visualisasi tersebut memiliki tujuan yang berbeda meskipun sama-sama menggunakan Matplotlib.

Memilih Jenis Plot​

Pemilihan jenis visualisasi sebaiknya dimulai dari pertanyaan:

Apa yang ingin saya komunikasikan dari data?

Gunakan line plot jika ingin melihat:

Tren
Perubahan
Hubungan kontinu
Time series

Gunakan scatter plot jika ingin melihat:

Persebaran
Hubungan dua variabel
Korelasi
Outlier

Gunakan bar plot jika ingin melihat:

Perbandingan kategori
Nilai antar kelompok
Ranking sederhana

Visualisasi bukan hanya masalah membuat grafik terlihat bagus, tetapi juga memilih bentuk visual yang sesuai dengan informasi yang ingin disampaikan.

Hubungan dengan Exploratory Data Analysis​

Visualisasi menggunakan Matplotlib merupakan bagian penting dari Exploratory Data Analysis (EDA).

Workflow sederhana:

Dataset
↓
Memahami struktur data
↓
Cleaning
↓
Exploratory Data Analysis
↓
Visualisasi
↓
Menemukan pola
↓
Membangun model

Contohnya, kita dapat menggunakan scatter plot untuk melihat apakah dua variabel memiliki hubungan tertentu.

Kemudian bar plot dapat digunakan untuk membandingkan kelompok.

Line plot dapat digunakan untuk melihat perubahan suatu nilai dari waktu ke waktu.

Ringkasan​

NumPy dan Matplotlib dapat digunakan secara bersama-sama untuk membuat visualisasi data.

NumPy digunakan untuk membuat dan mengolah data:

x = np.linspace(0, 10, 100)

Kemudian Matplotlib digunakan untuk memvisualisasikan data:

fig, ax = plt.subplots()

ax.plot(x, x**2)

plt.show()

Tiga jenis plot dasar yang dipelajari:

Line Plot​

ax.plot(x, y)

Digunakan untuk melihat tren atau hubungan kontinu.

Scatter Plot​

ax.scatter(x, y)

Digunakan untuk melihat persebaran dan hubungan antarvariabel.

Bar Plot​

ax.bar(categories, values)

Digunakan untuk membandingkan data berdasarkan kategori.

Cheat Sheet​

Membuat Data​

x = np.linspace(0, 10, 100)

Line Plot​

fig, ax = plt.subplots()

ax.plot(x, x**2)

plt.show()

Scatter Plot​

fig, ax = plt.subplots()

ax.scatter(x, np.sin(x))

plt.show()

Bar Plot​

fig, ax = plt.subplots()

ax.bar(
["Almond", "Peanut", "Cashew"],
[10, 8, 12]
)

plt.show()

Menambahkan Informasi​

ax.set(
title="Judul Grafik",
xlabel="Sumbu X",
ylabel="Sumbu Y"
)

Checklist Pembelajaran​

Setelah menyelesaikan materi ini, Anda seharusnya dapat:

  • Menjelaskan hubungan NumPy dan Matplotlib.
  • Menggunakan np.linspace().
  • Menjelaskan parameter start, stop, dan num.
  • Membedakan np.linspace() dan np.arange().
  • Membuat line plot.
  • Membuat scatter plot.
  • Membuat bar plot.
  • Menentukan kapan menggunakan line plot.
  • Menentukan kapan menggunakan scatter plot.
  • Menentukan kapan menggunakan bar plot.
  • Menggunakan fig, ax = plt.subplots().
  • Menambahkan title.
  • Menambahkan X label.
  • Menambahkan Y label.
  • Menggunakan ax.set().
  • Menampilkan grafik menggunakan plt.show().
  • Memahami fungsi semicolon pada Jupyter Notebook.
  • Menghubungkan visualisasi dengan Exploratory Data Analysis.

Latihan​

Latihan 1 - linspace()​

Buat array:

x = np.linspace(0, 20, 200)

Kemudian periksa:

print(x.size)
print(x[0])
print(x[-1])

Jelaskan hasilnya.

Latihan 2 - Line Plot​

Gunakan:

x = np.linspace(0, 10, 100)

Buat line plot untuk fungsi:

y = x²

Kemudian tambahkan:

  • Title.
  • X label.
  • Y label.
  • Grid.

Latihan 3 - Scatter Plot​

Gunakan data:

x = np.linspace(0, 10, 100)
y = np.sin(x)

Buat scatter plot.

Kemudian ubah jumlah data menjadi:

x = np.linspace(0, 10, 20)

Bandingkan hasil visualisasinya.

Latihan 4 - Bar Plot​

Gunakan data:

products = {
"Laptop": 1200,
"Keyboard": 100,
"Mouse": 50,
"Monitor": 300
}

Buat bar plot yang menampilkan:

  • Produk pada sumbu X.
  • Harga pada sumbu Y.
  • Title.
  • X label.
  • Y label.

Latihan 5 - Eksperimen​

Buat satu dataset kemudian visualisasikan menggunakan:

Line Plot
Scatter Plot

Bandingkan kedua visualisasi tersebut.

Jelaskan:

  1. Apa perbedaan tampilan?
  2. Apa informasi yang lebih mudah dilihat pada line plot?
  3. Apa informasi yang lebih mudah dilihat pada scatter plot?
  4. Dalam kondisi apa masing-masing plot lebih sesuai digunakan?