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 matplotlibdan impor sebagaiimport matplotlib.pyplot as plt -
Buat plot garis dengan
plt.plot(x, y), plot batang denganplt.bar(x, height), dan plot sebar denganplt.scatter(x, y) -
Selalu panggil
plt.show()untuk menampilkan plot, atauplt.savefig('filename.png')untuk menyimpannya -
Sesuaikan dengan
plt.title(),plt.xlabel(),plt.ylabel(), dan parametercolor -
Gunakan colormap (
cmap) untuk data kontinu danplt.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.

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()

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()

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()

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()

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)

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()

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()

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()

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()

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()

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()

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()

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()

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()

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()
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()
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.
Penulis Data Science | Analis Pemasaran Teknis Senior di Wayfair | MSE di Data Science dari University of Pennsylvania


