Lewati ke konten utama

Tutorial Matplotlib: Plot Garis, Batang, dan Sebar di Python

Tutorial praktis untuk membangun dan menyesuaikan plot garis, batang, dan sebar di Matplotlib menggunakan Python dan data pasar saham dunia nyata.
Diperbarui 5 Jun 2026  · 12 mnt baca

Dalam tutorial ini, saya membahas cara membuat plot garis, plot batang, dan plot sebar di Matplotlib menggunakan data pasar saham. Tutorial ini mengasumsikan Anda telah familier dengan array NumPy dan pandas DataFrame. Saya akan menjelaskan apa yang dilakukan setiap pemanggilan pustaka saat muncul, namun fokus utama di sini adalah Matplotlib.

Ringkasnya

  • Matplotlib adalah pustaka plotting dasar di Python — pasang dengan pip install matplotlib dan impor sebagai import matplotlib.pyplot as plt

  • Buat plot garis dengan plt.plot(x, y), plot batang dengan plt.bar(x, height), dan plot sebar dengan plt.scatter(x, y)

  • Selalu panggil plt.show() untuk menampilkan plot, atau plt.savefig('filename.png') untuk menyimpannya

  • Sesuaikan dengan plt.title(), plt.xlabel(), plt.ylabel(), dan parameter color

  • Gunakan colormap (cmap) untuk data kontinu dan plt.legend() untuk plot multi-seri

Apa Itu Matplotlib?

Matplotlib adalah pustaka visualisasi data yang paling luas digunakan di Python, dengan lebih dari 50 juta unduhan bulanan per 2026. Ia membuat plot statis, interaktif, dan animasi termasuk grafik garis, bagan batang, plot sebar, histogram, dan lainnya. Sebagian besar pustaka visualisasi Python lainnya (Seaborn, plotting pandas, dan bahkan sebagian dari Plotly) dibangun di atas Matplotlib.

Matplotlib menawarkan kontrol terperinci atas setiap elemen visual, yang memang berarti lebih banyak kode bahkan untuk plot dasar. Jika prioritas Anda adalah grafik eksploratif cepat, Seaborn menyediakan default tingkat tinggi yang sudah terlihat bagus. Untuk grafik web interaktif, Plotly Express adalah opsi lain yang layak dipertimbangkan.

Pada akhir tutorial ini, Anda akan tahu cara membuat plot garis, plot batang, dan plot sebar seperti di bawah, beserta dasar-dasar kustomisasi: memilih warna, menambahkan label dan judul, menetapkan batas sumbu, dan menyimpan gambar akhir ke berkas.

image14.png

Mulai Menggunakan Matplotlib

Tanpa berpanjang kata, mari memuat Matplotlib dan cepat meninjau dataset yang digunakan untuk tutorial ini.

Mengimpor Matplotlib

Sebelum membuat plot apa pun, Anda perlu mengimpor pustakanya. Submodul pyplot menyediakan semua fungsi plotting yang digunakan dalam tutorial ini.

Konvensinya adalah memberi alias pyplot sebagai plt. Saya juga mengimpor pandas, NumPy, dan datetime di sini karena akan digunakan pada bagian selanjutnya.

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetime

Memuat dataset indeks DJIA

Matplotlib dirancang untuk bekerja dengan array NumPy dan dataframe pandas. Pustaka ini memudahkan pembuatan grafik dari data tabular. Untuk tutorial ini, kita akan menggunakan harga historis indeks Dow Jones Industrial Average (DJIA) dari 2022-01-01 hingga 2022-12-31 (tersedia di sini). Anda dapat mengatur rentang tanggal di halaman tersebut lalu klik tombol “download a spreadsheet”.

Kita akan memuat berkas CSV bernama HistoricalPrices.csv menggunakan pustaka pandas dan melihat baris-baris pertama menggunakan metode .head().

import pandas as pd

djia_data = pd.read_csv('HistoricalPrices.csv')
djia_data.head()

image19.png

Kita melihat data mencakup 4 kolom: Date, Open, High, Low, dan Close. Empat yang terakhir terkait harga indeks selama hari perdagangan. Berikut penjelasan singkat tiap variabel.

  • Date: Hari yang diwakili oleh informasi harga saham.
  • Open: Harga DJIA pada pukul 09.30 ET saat pasar saham dibuka.
  • High: Harga tertinggi yang dicapai DJIA selama hari tersebut.
  • Low: Harga terendah yang dicapai DJIA selama hari tersebut.
  • Close: Harga DJIA saat pasar berhenti berdagang pada pukul 16.00 ET.

Sebagai langkah pembersihan cepat, kita juga perlu menggunakan metode rename() di pandas, karena dataset yang kita unduh memiliki spasi ekstra pada nama kolom.

djia_data = djia_data.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})

Kita juga mengonversi kolom Date ke tipe datetime dan mengurutkan naik berdasarkan tanggal. Untuk lebih lanjut tentang konversi tipe data, lihat tutorial Konversi Tipe Data Python.

djia_data['Date'] = pd.to_datetime(djia_data['Date'])
djia_data = djia_data.sort_values(by = 'Date')

Menggambar Plot Garis dengan Matplotlib

Plot garis menampilkan bagaimana nilai berubah sepanjang dimensi kontinu, paling sering terhadap waktu. Ini adalah grafik andalan untuk data runtun waktu karena titik-titik yang terhubung memperlihatkan tren, musiman, dan anomali secara sekilas.

Plot garis dengan satu garis

Kita dapat membuat plot garis di matplotlib menggunakan metode plt.plot(), di mana argumen pertama adalah variabel x dan argumen kedua adalah variabel y pada plot garis kita. Setiap kali membuat plot, pastikan untuk memanggil plt.show() agar grafik yang dibuat terlihat. Kita akan memvisualisasikan harga penutupan DJIA dari waktu ke waktu.

plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()

image1.png

Kita dapat melihat bahwa sepanjang tahun, harga indeks dimulai pada nilai tertingginya, diikuti beberapa fluktuasi naik turun sepanjang tahun. Terlihat harga terendah sekitar Oktober, lalu diikuti kenaikan harga yang kuat di akhir tahun.

Plot garis dengan banyak garis

Kita dapat memvisualisasikan beberapa garis pada plot yang sama dengan menambahkan pemanggilan plt.plot() lainnya sebelum fungsi plt.show().

plt.plot(djia_data['Date'], djia_data['Open'])
plt.plot(djia_data['Date'], djia_data['Close'])


plt.show()

image16.png

Sepanjang tahun, kita melihat bahwa harga pembukaan dan penutupan DJIA relatif berdekatan untuk setiap hari, tanpa pola jelas bahwa salah satunya selalu berada di atas atau di bawah yang lain.

Menambahkan legenda

Jika kita ingin membedakan garis mana mewakili kolom yang mana, kita dapat menambahkan legenda. Ini akan membuat label berwarna di sudut grafik. Kita dapat melakukannya menggunakan plt.legend() dan menambahkan parameter label pada setiap pemanggilan plt.plot().

plt.plot(djia_data['Date'], djia_data['Open'], label = 'Open')
plt.plot(djia_data['Date'], djia_data['Close'], label = 'Close')
plt.legend()
plt.show()

image2.png

Sekarang kita melihat legenda dengan label yang ditentukan muncul di lokasi default di kanan atas (lokasi dapat ditentukan menggunakan argumen loc pada plt.legend()).

Menggambar Plot Batang dengan Matplotlib

Plot batang sangat berguna untuk membandingkan nilai numerik antar kategori. Ini sangat membantu untuk menemukan kategori terbesar dan terkecil.

Untuk bagian ini, kita mengagregasi data menjadi rata-rata bulanan menggunakan pandas .groupby() sehingga kita dapat membandingkan kinerja bulanan DJIA. Untuk pembahasan lebih dalam tentang operasi pengelompokan, lihat tutorial Pandas GroupBy.

# Import the calendar package 
from calendar import month_name

# Order by months by chronological order
djia_data['Month'] = pd.Categorical(djia_data['Date'].dt.month_name(), month_name[1:])

# Group metrics by monthly averages
djia_monthly_mean = djia_data \
    .groupby('Month') \
    .mean(numeric_only=True) \
    .reset_index()

djia_monthly_mean.head(6)

image5.png

Plot batang vertikal

Kita akan mulai dengan membuat bagan batang dengan batang vertikal. Ini dapat dilakukan menggunakan metode plt.bar() dengan argumen pertama sebagai variabel sumbu-x (Month) dan parameter height sebagai sumbu-y (Close). Lalu pastikan untuk memanggil plt.show() untuk menampilkan plot.

plt.bar(djia_monthly_mean['Month'], height = djia_monthly_mean['Close'])
plt.show()

image9.png

Kita melihat bahwa sebagian besar harga penutupan DJIA saling berdekatan, dengan nilai rata-rata penutupan terendah pada bulan Juni dan nilai rata-rata penutupan tertinggi pada bulan Januari.

Mengurutkan batang pada plot batang

Jika kita ingin menampilkan batang-batang ini dalam urutan dari tertinggi ke terendah berdasarkan rata-rata harga penutupan bulanan, kita dapat mengurutkan batang menggunakan metode sort_values() di pandas, lalu menggunakan metode plt.bar() yang sama.

djia_monthly_mean_srtd = djia_monthly_mean.sort_values(by = 'Close', ascending = False)

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image10.png

Seperti yang Anda lihat, jauh lebih mudah mengetahui bulan mana yang memiliki rata-rata harga penutupan DJIA tertinggi dan bulan mana yang terendah. Juga lebih mudah untuk membandingkan antar bulan dan membuat peringkat bulan.

Plot batang horizontal

Terkadang lebih mudah menafsirkan bagan batang dan membaca label saat kita membuat plot batang dengan batang horizontal. Kita dapat melakukannya menggunakan metode plt.barh().

plt.barh(djia_monthly_mean_srtd['Month'], width = djia_monthly_mean_srtd['Close'])
plt.show()

image17.png
Seperti yang Anda lihat, label tiap kategori (bulan) lebih mudah dibaca dibanding saat batangnya vertikal. Kita tetap dapat dengan mudah membandingkan antar kelompok. Bagan batang horizontal ini sangat berguna saat ada banyak kategori.

Menggambar Plot Sebar dengan Matplotlib

Plot sebar menampilkan hubungan antara dua variabel numerik. Setiap titik merepresentasikan satu observasi, dan pola keseluruhan memperlihatkan apakah ada hubungan linear, non-linear, atau tidak ada hubungan, yang secara langsung memandu pilihan teknik pemodelan Anda.

Membuat plot sebar dasar

Mirip dengan plot lainnya, plot sebar dapat dibuat menggunakan pyplot.scatter(), di mana argumen pertama adalah variabel sumbu-x dan argumen kedua adalah variabel sumbu-y. Pada contoh ini, kita akan melihat hubungan antara harga pembukaan dan penutupan DJIA.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image4.png

Pada sumbu-x, kita memiliki harga pembukaan DJIA, dan pada sumbu-y, kita memiliki harga penutupan. Seperti yang diharapkan, seiring meningkatnya harga pembukaan, kita melihat hubungan yang kuat pada harga penutupan yang ikut meningkat.

Menambahkan garis tren

Selanjutnya, kita akan menambahkan garis tren pada grafik untuk menampilkan hubungan linear antara variabel open dan close secara lebih eksplisit. Untuk melakukan ini, kita akan menggunakan metode numpy polyfit() dan poly1d(). Metode pertama akan memberikan kita fitting polinomial kuadrat terkecil di mana argumen pertama adalah variabel x, variabel kedua adalah variabel y, dan variabel ketiga adalah derajat fitting (1 untuk linear). Metode kedua akan memberikan kelas polinomial satu dimensi yang dapat kita gunakan untuk membuat garis tren menggunakan plt.plot().

z = np.polyfit(djia_data['Open'], djia_data['Close'], 1)
p = np.poly1d(z)


plt.scatter(djia_data['Open'], djia_data['Close'])
plt.plot(djia_data['Open'], p(djia_data['Open']))
plt.show()

image20.png

Seperti terlihat, garis di latar belakang grafik mengikuti tren plot sebar dengan dekat karena hubungan antara harga pembukaan dan penutupan sangat linear. Terlihat bahwa saat harga pembukaan meningkat, harga penutupan umumnya meningkat pada laju yang serupa dan linear.

Menetapkan Judul Plot dan Label Sumbu

Judul plot dan label sumbu membantu pemirsa memahami data apa yang mereka lihat. Matplotlib menyediakan plt.title(), plt.xlabel(), dan plt.ylabel() untuk memberi anotasi pada plot. Berikut plot sebar sebelumnya dengan ketiganya ditambahkan:

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.title('DJIA 2022: Open vs. Close Price')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()

image8.png

Mengubah Warna

Pemilihan warna memengaruhi keterbacaan dan penekanan. Di Matplotlib, warna dapat ditentukan dengan tiga cara:

  • Nama warna: "red", "blue", "steelblue"

  • Kode heksadesimal: "#f4db9a", "#383c4a"

  • Tuple RGB: (0.49, 0.39, 0.15), (0.12, 0.21, 0.47)

Mengubah warna garis

Untuk plot garis, kita dapat mengubah warna menggunakan atribut color pada plt.plot(). Di bawah ini, kita ubah warna garis harga pembukaan menjadi “black” dan garis harga penutupan menjadi “red”.

plt.plot(djia_data['Date'], djia_data['Open'], color = 'black')
plt.plot(djia_data['Date'], djia_data['Close'], color = 'red')
plt.show()

image3.png

Mengubah warna batang

Untuk batang, kita dapat memberikan sebuah daftar ke atribut color untuk menentukan warna tiap batang. Misalkan kita ingin menyoroti harga rata-rata pada bulan Januari untuk menunjukkan poin bahwa rata-rata harga penutupan sangat kuat. Kita dapat melakukannya dengan memberi warna unik pada batang tersebut agar menarik perhatian.

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'], color = ['blue', 'gray', 'gray', 'gray', 'gray', 'gray'])
plt.show()

image11.png

Mengubah warna titik

Terakhir, untuk plot sebar, kita dapat mengubah warna menggunakan atribut color dari plt.scatter(). Kita akan mewarnai semua titik pada bulan Januari dengan biru dan semua titik lainnya dengan abu-abu untuk menunjukkan cerita serupa seperti pada visualisasi di atas.

plt.scatter(djia_data[djia_data['Month'] == 'January']['Open'], djia_data[djia_data['Month'] == 'January']['Close'], color = 'blue')

plt.scatter(djia_data[djia_data['Month'] != 'January']['Open'], djia_data[djia_data['Month'] != 'January']['Close'], color = 'gray')

plt.show()

image18.png
Menggunakan Colormap

Colormap adalah skala warna bawaan Matplotlib yang memetakan nilai numerik ke gradien warna (dokumentasi resmi). Untuk pembahasan lebih dalam, lihat tutorial Matplotlib Colormaps. Colormap umumnya tampak serasi dan membantu menyampaikan cerita pada nilai yang meningkat.

Pada contoh di bawah, kita menggunakan colormap dengan meneruskan harga penutupan (variabel y) ke atribut c, dan colormap plasma melalui cmap. Terlihat bahwa ketika nilai meningkat, warna yang terkait menjadi lebih cerah dan kekuningan sementara nilai yang lebih rendah berwarna ungu dan lebih gelap.

plt.scatter(djia_data['Open'], djia_data['Close'], c=djia_data['Close'], cmap = plt.cm.plasma)

plt.show()

 image6.png

Menetapkan Batas Sumbu

Terkadang, bermanfaat untuk melihat rentang nilai tertentu pada sebuah plot. Misalnya, jika DJIA saat ini diperdagangkan sekitar $30.000, kita mungkin hanya peduli pada perilaku di sekitar harga tersebut. Kita dapat memberikan tuple ke plt.xlim() dan plt.ylim() untuk menetapkan batas x dan y secara berurutan. Nilai pertama dalam tuple adalah batas bawah, dan nilai kedua adalah batas atas.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.xlim((29000, 34000))
plt.ylim((29000, 34000))
plt.title('DJIA Open vs Close (Zoomed In)')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()

image15.png

Menyimpan Plot

Setelah Anda memiliki plot yang memuaskan, Anda dapat menyimpannya ke berkas. Matplotlib mendukung format PNG, PDF, SVG, dan lainnya melalui plt.savefig(). Format disimpulkan dari ekstensi berkas.

Terakhir, kita dapat menyimpan plot yang kita buat di matplotlib menggunakan metode plt.savefig(). Kita dapat menyimpan berkas dalam berbagai format seperti ‘png’, ‘pdf’, dan ‘svg’. Argumen pertama adalah nama berkas. Format disimpulkan dari ekstensi berkas (atau Anda dapat menggantinya dengan argumen format).

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.savefig('DJIA 2022 Scatterplot Open vs. Close.png')

Penutup

Tutorial ini membahas plot garis, plot batang, dan plot sebar, tiga jenis grafik yang paling sering Anda gunakan. Matplotlib memerlukan lebih banyak kode dibanding pustaka tingkat lebih tinggi seperti Seaborn atau Plotly, tetapi keluasannya memberi Anda kontrol tingkat piksel atas setiap elemen pada figur.

Berikutnya, saya sarankan mengeksplorasi histogram, diagram pai, dan colormap sebagai langkah lanjutan. Jika Anda menginginkan pembahasan terstruktur, kursus Introduction to Data Visualization with Matplotlib membahas subplot, penataan gaya, dan berbagi figur dalam empat jam.

FAQ Matplotlib

Apa itu Matplotlib di Python?

Matplotlib adalah pustaka visualisasi data populer di Python. Sering digunakan untuk membuat visualisasi statis, interaktif, dan animasi di Python. Matplotlib memungkinkan Anda membuat plot, histogram, bagan batang, plot sebar, dan lain-lain hanya dengan beberapa baris kode.

Mengapa saya harus menggunakan Matplotlib untuk visualisasi data?

Ada beberapa alasan. Pertama, Matplotlib fleksibel. Ia mendukung beragam grafik dan plot, serta terintegrasi baik dengan banyak pustaka Python lainnya seperti NumPy dan pandas. Kedua, ini adalah pustaka yang matang dan banyak digunakan, sehingga memiliki komunitas yang kuat serta banyak sumber dan tutorial yang tersedia. Terakhir, karena berada di Python, Anda dapat mengotomatisasi dan menyesuaikan plot sebagai bagian dari pipeline data Anda.

Bagaimana cara memasang Matplotlib?

Anda dapat memasang Matplotlib dengan pip, penginstal paket Python. Buka terminal Anda dan ketik: pip install matplotlib. Jika Anda menggunakan Jupyter notebook, Anda bisa menjalankan perintah ini di sel kode dengan menambahkan tanda seru di depannya: !pip install matplotlib.

Bagaimana cara membuat plot dasar di Matplotlib?

Berikut contoh sederhana. Pertama, Anda perlu mengimpor pustaka Matplotlib. Modul yang paling sering digunakan adalah pyplot, dan biasanya diimpor dengan alias plt:

import matplotlib.pyplot as plt

Lalu Anda bisa membuat plot garis dasar seperti ini:

plt.plot([1, 2, 3, 4]) plt.ylabel('Some Numbers') plt.show()

Pada contoh ini, plt.plot([1, 2, 3, 4]) digunakan untuk memplot daftar angka yang ditentukan. Baris plt.ylabel('Some Numbers') menetapkan label untuk sumbu-y, dan plt.show() menampilkan plot.


Author
Kevin Babitz
LinkedIn

Penulis Data Science | Analis Pemasaran Teknis Senior di Wayfair | MSE di Data Science dari University of Pennsylvania

Topik
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak