Skip to main content

Customizing Matplotlib Styles - 2

Kustomisasi Style, Color Maps, dan Axis Limits pada Matplotlib

Pada materi sebelumnya kita telah mempelajari cara melakukan kustomisasi visualisasi menggunakan Object-Oriented Matplotlib.

Pada materi ini kita akan melanjutkan kustomisasi dengan mempelajari tiga konsep penting:

  • Style
  • Color Map (cmap)
  • Axis Limits (xlim dan ylim)

Ketiga konsep tersebut membantu kita membuat visualisasi yang lebih mudah dibaca dan memfokuskan perhatian pada bagian data yang relevan.

Tujuan Pembelajaran

Setelah mempelajari materi ini, kita diharapkan dapat:

  • Menggunakan style bawaan Matplotlib.
  • Memahami konsep color map.
  • Menggunakan parameter cmap pada scatter plot.
  • Memahami hubungan antara c dan cmap.
  • Mengatur batas sumbu X menggunakan set_xlim().
  • Mengatur batas sumbu Y menggunakan set_ylim().
  • Menggabungkan style, color map, dan axis limits dalam satu visualisasi.
  • Membuat visualisasi dengan beberapa subplot menggunakan pendekatan Object-Oriented.

Mengapa Visualisasi Perlu Dikustomisasi?

Grafik yang dibuat dengan pengaturan default sebenarnya sudah dapat digunakan.

Namun, dalam Data Science kita sering ingin:

  • menonjolkan pola tertentu,
  • membandingkan kelompok data,
  • mengurangi area kosong,
  • membuat grafik lebih mudah dibaca,
  • menjaga konsistensi tampilan,
  • dan membantu pembaca memahami informasi penting.

Contohnya:

Data

Visualisasi Default

Kustomisasi
├── Style
├── Color
├── Axis Limits
├── Label
└── Legend

Visualisasi yang lebih informatif

Menggunakan Style pada Matplotlib

Matplotlib memiliki berbagai style bawaan yang dapat digunakan untuk mengubah tampilan visualisasi.

Untuk melihat style yang tersedia:

import matplotlib.pyplot as plt

plt.style.available

Hasilnya berupa daftar style yang tersedia pada versi Matplotlib yang digunakan.

Contohnya dapat mencakup:

default
classic
ggplot
bmh
dark_background
...

Daftar tersebut dapat berbeda antara versi Matplotlib yang berbeda.

Menerapkan Style

Untuk menggunakan salah satu style:

plt.style.use("ggplot")

Contoh:

import matplotlib.pyplot as plt

plt.style.use("ggplot")

plt.plot(
[1, 2, 3, 4],
[10, 20, 15, 30]
)

plt.show()

Style akan memengaruhi tampilan grafik yang dibuat setelah style diterapkan.

Menggunakan Style White Grid

Salah satu style yang sering digunakan untuk visualisasi data adalah style dengan grid.

Misalnya:

plt.style.use("seaborn-v0_8-whitegrid")

Jika style tersebut tersedia pada versi Matplotlib kita, grafik akan menggunakan konfigurasi visual yang sesuai dengan style tersebut.

Perlu diperhatikan bahwa nama style dapat berbeda tergantung versi Matplotlib.

Karena itu, cara yang aman adalah memeriksa:

plt.style.available

terlebih dahulu.

Apa Itu Color Map?

Selain style, kita dapat mengatur bagaimana nilai data direpresentasikan menggunakan warna.

Konsep tersebut disebut Color Map atau sering disingkat:

cmap

Color map adalah pemetaan nilai menjadi warna berdasarkan suatu skema warna.

Contohnya:

Nilai kecil

Warna A

Nilai sedang

Warna B

Nilai besar

Warna C

Color map sangat berguna ketika warna digunakan untuk menyampaikan informasi tambahan dari data.

Parameter cmap

Parameter cmap dapat digunakan pada berbagai jenis visualisasi yang mendukung pemetaan warna.

Contohnya pada scatter plot:

scatter = ax.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="winter"
)

Pada kode tersebut terdapat dua parameter penting:

c=over_50["target"]

dan:

cmap="winter"

Keduanya bekerja bersama.

Memahami Parameter c

Parameter:

c=

digunakan untuk menentukan nilai yang akan digunakan dalam pewarnaan titik.

Contoh:

c=over_50["target"]

berarti warna titik ditentukan berdasarkan nilai pada kolom:

target

Misalnya target memiliki nilai:

0
1
0
1
1
0

maka Matplotlib menggunakan nilai tersebut untuk menentukan warna setiap titik.

Memahami Parameter cmap

Parameter:

cmap="winter"

menentukan skema warna yang digunakan untuk memetakan nilai dari c.

Jadi:

c=over_50["target"]

menentukan:

Data apa yang digunakan untuk menentukan warna?

Sedangkan:

cmap="winter"

menentukan:

Skema warna apa yang digunakan?

Secara konsep:

target

nilai

c

cmap

warna

Contoh Menggunakan Beberapa Color Map

Matplotlib menyediakan berbagai colormap.

Contohnya:

cmap="winter"

atau:

cmap="summer"

atau:

cmap="plasma"

Contoh:

scatter = ax.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="plasma"
)

Kita dapat mengganti nama colormap sesuai kebutuhan.

Untuk melihat colormap yang tersedia pada versi Matplotlib kita, dapat menggunakan:

plt.colormaps()

Kemudian kita dapat memilih colormap yang sesuai.

Colormap untuk Data Kategorikal dan Kontinu

Pemilihan colormap sebaiknya disesuaikan dengan jenis data.

Data Kategorikal

Jika warna digunakan untuk membedakan kategori seperti:

0 = Tidak
1 = Ya

kita sebenarnya sedang menggunakan warna untuk membedakan kategori.

Untuk data kategorikal, colormap diskrit atau warna yang berbeda antar kategori sering lebih mudah dipahami daripada gradasi yang seolah-olah menunjukkan urutan kontinu.

Data Kontinu

Jika nilai merupakan data numerik kontinu, misalnya:

Temperature
10
15
20
25
30

colormap bergradasi dapat lebih sesuai.

Contohnya:

scatter = ax.scatter(
x=x,
y=y,
c=temperature,
cmap="viridis"
)

Warna dapat merepresentasikan perubahan nilai temperatur.

Jadi, cmap bukan sekadar dekorasi. Warna dapat menjadi bagian dari encoding informasi pada visualisasi.

Memahami c dan cmap

Perhatikan contoh berikut:

scatter = ax.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="winter"
)

Kita dapat membacanya sebagai:

x

Age

y

Cholesterol

c

Target

cmap

Skema warna

Sehingga satu titik pada grafik memiliki beberapa informasi:

Posisi X → Age
Posisi Y → Cholesterol
Warna → Target

Ini merupakan salah satu kekuatan visualisasi data: satu grafik dapat menyampaikan beberapa dimensi informasi.

Mengatur Batas Sumbu

Selain warna, kita juga dapat mengatur area yang ditampilkan oleh grafik.

Matplotlib menyediakan:

ax.set_xlim()

untuk sumbu X dan:

ax.set_ylim()

untuk sumbu Y.

set_xlim()

Fungsi:

ax.set_xlim()

digunakan untuk menentukan batas tampilan sumbu X.

Contoh:

ax.set_xlim([50, 80])

Artinya area sumbu X yang ditampilkan dibatasi dari:

50 sampai 80

Secara visual:

50 80
│-------------------------------│
X

Data yang berada di luar rentang tersebut tidak ditampilkan pada area plot.

set_ylim()

Fungsi:

ax.set_ylim()

digunakan untuk menentukan batas tampilan sumbu Y.

Contoh:

ax.set_ylim([60, 200])

Artinya area sumbu Y ditampilkan dari:

60 sampai 200

Secara konsep:

200 ───────────────



60 ───────────────

Mengapa Axis Limits Berguna?

Axis limits dapat membantu kita memfokuskan visualisasi.

Misalnya data usia memiliki rentang:

20 - 80

tetapi kita hanya ingin menganalisis kelompok:

Age > 50

Kita dapat mengatur:

ax.set_xlim([50, 80])

Dengan demikian grafik lebih fokus pada area yang ingin dianalisis.

Namun, kita harus berhati-hati.

Memotong sumbu dapat membuat konteks data menjadi kurang lengkap jika pembaca tidak mengetahui bahwa rentang telah dibatasi.

Karena itu, axis limits harus digunakan untuk tujuan analisis atau keterbacaan, bukan untuk membuat pola tertentu terlihat lebih dramatis.

Contoh set_xlim()

Misalnya:

ax.set_xlim([50, 80])

maka sumbu X hanya menampilkan rentang:

50 → 80

Sedangkan:

ax.set_xlim([20, 100])

akan memberikan rentang yang lebih luas.

Jadi pilihan batas sumbu harus disesuaikan dengan konteks data.

Contoh set_ylim()

Misalnya:

ax.set_ylim([60, 200])

maka sumbu Y hanya menampilkan nilai:

60 → 200

Jika menggunakan:

ax.set_ylim([0, 250])

rentang yang ditampilkan menjadi lebih luas.

Menggabungkan cmap, xlim, dan ylim

Sekarang kita dapat menggabungkan seluruh konsep tersebut.

scatter = ax.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="winter"
)

ax.set_xlim([50, 80])
ax.set_ylim([100, 400])

Di sini kita:

  1. Membuat scatter plot.
  2. Menggunakan target untuk menentukan warna.
  3. Menggunakan colormap winter.
  4. Membatasi sumbu X.
  5. Membatasi sumbu Y.

Studi Kasus Heart Disease

Sekarang kita akan menerapkan seluruh konsep pada dataset Heart Disease.

Kita menggunakan data pasien dengan usia lebih dari 50 tahun:

over_50 = heart_disease[
heart_disease["age"] > 50
]

Kita kemudian membuat dua visualisasi:

Age → Cholesterol

Age → Maximum Heart Rate

Keduanya menggunakan:

Age

sebagai sumbu X.

Membuat Dua Subplot

Kita menggunakan:

fig, (ax0, ax1) = plt.subplots(
nrows=2,
ncols=1,
figsize=(10, 10),
sharex=True
)

Strukturnya:

Figure

├── ax0
│ └── Age vs Cholesterol

└── ax1
└── Age vs Max Heart Rate

Parameter:

sharex=True

membuat kedua subplot berbagi sumbu X.

Subplot Pertama

Grafik pertama membandingkan usia dengan kadar kolesterol.

scatter0 = ax0.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="winter"
)

Kemudian kita memberikan label:

ax0.set(
title="Heart Disease and Cholesterol Levels",
ylabel="Cholesterol"
)

Kita juga menambahkan legenda:

ax0.legend(
*scatter0.legend_elements(),
title="Target"
)

Dan garis rata-rata:

ax0.axhline(
over_50["chol"].mean(),
linestyle="--"
)

Kemudian kita menentukan batas sumbu X:

ax0.set_xlim([50, 80])

Subplot Kedua

Grafik kedua membandingkan usia dengan maximum heart rate.

scatter1 = ax1.scatter(
x=over_50["age"],
y=over_50["thalach"],
c=over_50["target"],
cmap="winter"
)

Kemudian kita memberikan label:

ax1.set(
title="Heart Disease and Max Heart Rate",
xlabel="Age",
ylabel="Max Heart Rate"
)

Legenda:

ax1.legend(
*scatter1.legend_elements(),
title="Target"
)

Garis rata-rata:

ax1.axhline(
over_50["thalach"].mean(),
linestyle="--"
)

Dan batas sumbu:

ax1.set_xlim([50, 80])
ax1.set_ylim([60, 200])

Kode Lengkap

Berikut kode lengkap visualisasi:

import matplotlib.pyplot as plt

# Menggunakan style
plt.style.use("seaborn-v0_8-whitegrid")

# Membuat dua subplot
fig, (ax0, ax1) = plt.subplots(
nrows=2,
ncols=1,
figsize=(10, 10),
sharex=True
)

# ----------------------------------------------------
# Subplot 1: Age vs Cholesterol
# ----------------------------------------------------

scatter0 = ax0.scatter(
x=over_50["age"],
y=over_50["chol"],
c=over_50["target"],
cmap="winter"
)

ax0.set(
title="Heart Disease and Cholesterol Levels",
ylabel="Cholesterol"
)

ax0.legend(
*scatter0.legend_elements(),
title="Target"
)

ax0.axhline(
over_50["chol"].mean(),
linestyle="--"
)

ax0.set_xlim([50, 80])

# ----------------------------------------------------
# Subplot 2: Age vs Maximum Heart Rate
# ----------------------------------------------------

scatter1 = ax1.scatter(
x=over_50["age"],
y=over_50["thalach"],
c=over_50["target"],
cmap="winter"
)

ax1.set(
title="Heart Disease and Max Heart Rate",
xlabel="Age",
ylabel="Max Heart Rate"
)

ax1.legend(
*scatter1.legend_elements(),
title="Target"
)

ax1.axhline(
over_50["thalach"].mean(),
linestyle="--"
)

ax1.set_xlim([50, 80])
ax1.set_ylim([60, 200])

# ----------------------------------------------------
# Judul utama Figure
# ----------------------------------------------------

fig.suptitle(
"Heart Disease Analysis",
fontsize=16,
fontweight="bold"
)

# Mengatur layout
fig.tight_layout(
rect=[0, 0, 1, 0.96]
)

plt.show()

matplotlib

Memahami Kode dari Atas ke Bawah

Kode tersebut dapat dipahami melalui alur berikut:

1. Import Matplotlib

2. Pilih style

3. Buat Figure dan Axes

4. Buat scatter plot ax0

5. Atur label ax0

6. Tambahkan legend ax0

7. Tambahkan mean line ax0

8. Atur axis limits ax0

9. Buat scatter plot ax1

10. Atur label ax1

11. Tambahkan legend ax1

12. Tambahkan mean line ax1

13. Atur axis limits ax1

14. Tambahkan super title

15. Atur layout

16. Tampilkan grafik

Style, Colormap, dan Axis Limits Memiliki Fungsi Berbeda

Ketiga konsep tersebut jangan dianggap sebagai hal yang sama.

FiturFungsi
plt.style.use()Mengatur tampilan umum
cmapMemetakan nilai data ke warna
set_xlim()Mengatur rentang tampilan X
set_ylim()Mengatur rentang tampilan Y

Secara sederhana:

Style

Bagaimana grafik terlihat?

cmap

Bagaimana nilai direpresentasikan dengan warna?

xlim / ylim

Bagian data mana yang terlihat?

Hati-Hati dengan Axis Limits

Axis limits dapat membantu memperjelas grafik, tetapi penggunaannya harus transparan.

Misalnya sebuah dataset memiliki nilai:

0 - 100

tetapi kita membuat:

ax.set_ylim([40, 60])

Maka pembaca hanya melihat sebagian kecil data.

Hal ini dapat membuat variasi terlihat lebih besar secara visual dibandingkan ketika seluruh rentang data ditampilkan.

Karena itu, selalu pertimbangkan konteks ketika menentukan:

set_xlim()
set_ylim()

Memilih Colormap

Beberapa colormap dapat digunakan untuk kebutuhan berbeda.

Contohnya:

viridis
plasma
inferno
magma
cividis
winter
summer

Pemilihan colormap sebaiknya mempertimbangkan:

  • jenis data,
  • keterbacaan,
  • kontras,
  • kebutuhan interpretasi,
  • dan aksesibilitas warna.

Untuk data numerik kontinu, colormap seperti viridis sering menjadi pilihan yang baik karena memiliki perubahan warna yang relatif mudah dibedakan.

Untuk kategori, sering kali lebih tepat menggunakan warna diskrit yang jelas antar kategori daripada mengandalkan gradasi kontinu.

Kesalahan yang Sering Terjadi

Menggunakan cmap Tanpa c

Contoh:

ax.scatter(
x=x,
y=y,
cmap="winter"
)

Pada penggunaan scatter untuk pemetaan warna berdasarkan data, cmap perlu dipasangkan dengan nilai yang dipetakan melalui c atau mekanisme warna lain yang sesuai.

Contoh yang benar:

ax.scatter(
x=x,
y=y,
c=target,
cmap="winter"
)

Mengira cmap Menentukan Warna Secara Langsung

cmap bukan berarti:

Semua titik menjadi satu warna tertentu

Sebaliknya, colormap digunakan untuk memetakan nilai ke warna.

Misalnya:

c=temperature
cmap="viridis"

berarti nilai temperature dipetakan menggunakan colormap viridis.

Mengatur Axis Limits Secara Sembarangan

Jangan memilih:

ax.set_xlim(...)
ax.set_ylim(...)

hanya supaya grafik terlihat lebih bagus.

Pastikan rentang yang dipilih memiliki alasan analitis atau visual yang jelas.

Menggunakan Terlalu Banyak Warna

Warna sebaiknya memiliki fungsi.

Jika setiap elemen diberikan warna berbeda tanpa alasan, grafik dapat menjadi sulit dipahami.

Ringkasan

Pada materi ini kita telah mempelajari tiga bagian penting dalam kustomisasi Matplotlib.

Style

Style mengatur tampilan umum grafik.

plt.style.use("ggplot")

Color Map

cmap menentukan skema warna yang digunakan untuk memetakan nilai.

ax.scatter(
x=x,
y=y,
c=target,
cmap="winter"
)

Axis Limits

set_xlim() mengatur rentang sumbu X:

ax.set_xlim([50, 80])

Sedangkan set_ylim() mengatur rentang sumbu Y:

ax.set_ylim([60, 200])

Kesimpulan

Kustomisasi Matplotlib bukan hanya tentang membuat grafik terlihat lebih menarik.

Kustomisasi yang baik harus membantu pembaca memahami data.

Tiga konsep yang dipelajari dapat dirangkum sebagai:

plt.style.use()

Mengatur tampilan umum

cmap

Menggunakan warna untuk menyampaikan informasi

set_xlim()
set_ylim()

Mengatur area data yang ditampilkan

Dengan menggabungkan ketiganya, kita dapat membuat visualisasi yang lebih terstruktur dan komunikatif.